Extrahování třídy soukromých dat | |
---|---|
Popsáno v Návrhové vzory | Ne |
Zvýraznění soukromé datové třídy (eng. Private class data ) je strukturní návrhový vzor používaný ke skrytí atributů a manipulaci s nimi.
Obvykle hodiny vždy zpočátku vypadají jasně a srozumitelně. Dělají svou práci a nelezou do povinností jiných tříd. Při vývoji programu je však přidána nová logika. V důsledku toho dostávají některé třídy omylem mnoho dalších povinností. K záchraně přichází soukromá metoda refaktoringu , známá jako "Extract Class". Umožňuje vám dodržet „ Princip jednotné odpovědnosti “, čímž jsou třídy spolehlivější a odolnější vůči změnám.
Chcete-li použít tento návrhový vzor na požadovanou třídu, musíte:
Měli byste provádět změny po troškách a testovat výsledek po každém tahu, to vám ušetří nutnost opravovat velké množství chyb na samém konci. Na konci, po opětovném přezkoumání nových tříd, se vraťte ke staré třídě, možná se její odpovědnost změnila, a nyní má smysl ji nazývat jinak.
Příklad implementace v C# jmenný prostor Private_class_data { class Program { static void Main ( string [] args ) { var radius = new double (); var color = nová barva (); var origin = newPoint ( ); var circle_before = new before . Kruh ( poloměr , barva , počátek ); var circle_after = nový po . Kruh ( poloměr , barva , počátek ); } } barva třídy { } třída Grafika { } bod třídy { } } jmenný prostor Private_class_data.before { class Circle { private double radius ; soukromé Barva barva ; soukromý bod původu ; public Circle ( dvojitý poloměr , barva barvy , počátek bodu ) { this . poloměr = poloměr ; toto . barva = barva ; toto . původ = původ ; } public double Circumference { get { return 2 * Math . PI * toto . poloměr ; } } public double Diameter { get { return 2 * this . poloměr ; } } public void Kreslení ( grafika ) { // ... } } } jmenný prostor Private_class_data.after { class CircleData { private double radius ; soukromé Barva barva ; soukromý bod původu ; public CircleData ( dvojitý poloměr , barva barvy , počátek bodu ) { this . poloměr = poloměr ; toto . barva = barva ; toto . původ = původ ; } public double Radius { get { return this . poloměr ; } } public Color Color { get { return this . barva ; } } public Point Origin { get { return this . původ ; } } } class Circle { private CircleData circleData ; public Circle ( dvojitý poloměr , Barva barvy , Počátek bodu ) { circleData = new CircleData ( poloměr , barva , počátek ); } public double Circumference { get { return 2 * Math . PI * toto . circleData . Poloměr ; } } public double Diameter { get { return 2 * this . circleData . Poloměr ; } } public void Kreslení ( grafika ) { // ... } } }Designové vzory | |
---|---|
Hlavní | |
Generativní | |
Strukturální | |
Behaviorální | |
Paralelní programování |
|
architektonický |
|
Java EE šablony | |
Jiné šablony | |
knihy | |
Osobnosti |