Privát adatosztály kibontása

Privát adatosztály kibontása
Leírása: Tervezési minták Nem

A privát adatosztály kiemelése (eng. Private class data ) egy strukturális tervezési minta , amelyet az attribútumok elrejtésére és azok manipulálására használnak.

Leírás

Általában az órák kezdetben mindig világosnak és érthetőnek tűnnek. Teszik a dolgukat, és nem másznak bele más osztályok feladataiba. A program fejlesztése során azonban új logika kerül hozzáadásra. Ennek eredményeként egyes osztályok tévedésből sok további felelősséget kapnak. Egy privát refaktorálási módszer jön a segítségre , az úgynevezett "Extract Class". Lehetővé teszi, hogy megfeleljen az " Egyetlen felelősség elvének ", ezáltal megbízhatóbbá és a változásokkal szemben ellenállóbbá teszi az osztályokat.

Megvalósítási példák

Ahhoz, hogy ezt a tervezési mintát a kívánt osztályra alkalmazza, a következőket kell tennie:

  1. Hozzon létre egy új osztályt, amelynek egyetlen felelőssége lesz a refaktorálási metódusok használatával: a mező kivonása és a metóduskivonás.
  2. Hozzon létre kapcsolatot a régi és az új osztály között.

A változtatásokat apránként érdemes elvégezni, és minden lépés után tesztelni az eredményt, ezzel megkímélheti magát attól, hogy a legvégén sok hibát kell kijavítania. A végén, az új osztályok ismételt áttekintése után, térjen vissza a régi osztályhoz, talán megváltozott a felelőssége, és most van értelme másként nevezni.

Megvalósítási példa C# nyelven névtér Private_class_data { class Program { static void Main ( string [] args ) { var radius = new double (); var szín = új szín (); var origin = newPoint ( ); var circle_before = new before . Kör ( sugár , szín , eredet ); var circle_after = new after . Kör ( sugár , szín , eredet ); } } osztály színe { } osztály grafika { } osztálypont { } _ } névtér Private_class_data.before { class Circle { private double sugar ; privát Szín szín ; privát Pont eredet ; public Kör ( dupla sugár , szín színe , pont origója ) { this . sugár = sugár ; ezt . szín = szín ; ezt . eredet = eredet ; } public double Kerület { get { return 2 * Math . PI * ez . sugár ; } } public double Átmérő { get { return 2 * this . sugár ; } } public void Draw ( Grafikus grafika ) { //... } } } névtér Private_class_data.after { class CircleData { private double sugar ; privát Szín szín ; privát Pont eredet ; public CircleData ( dupla sugár , szín színe , pont origója ) { this . sugár = sugár ; ezt . szín = szín ; ezt . eredet = eredet ; } public double Radius { get { return this . sugár ; } } public Color Color { get { return this . szín ; } } public Point Origin { get { return this . származás ; } } } class Circle { private CircleData circleData ; public Circle ( double sugar , Color color , Point origin ) { circleData = new CircleData ( sugár , szín , origó ); } public double Kerület { get { return 2 * Math . PI * ez . circleData . Sugár ; } } public double Átmérő { get { return 2 * this . circleData . Sugár ; } } public void Draw ( Grafikus grafika ) { //... } } }

Lásd még

Irodalom