Objektumvezérelt rendszerek tervezése 5.óra – Singleton, Visitor, Abstract Factory © Nagy Csaba
Szegedi Tudományegyetem – Szoftverfejlesztés Tanszék Singleton Cél: biztosítja, hogy egy osztályból csak egy objektum keletkezzen amely globálisan elérhető Alkalmazhatóság: pontosan egy példány létezhet amelyeket a kliensek elérhetnek az egyedüli példány bővíthető kell hogy legyen (származtatással) amely ugyanúgy használható © Nagy Csaba
Szegedi Tudományegyetem – Szoftverfejlesztés Tanszék Singleton © Nagy Csaba
Szegedi Tudományegyetem – Szoftverfejlesztés Tanszék Singleton példa – Singleton.cpp Singleton – Singleton osztály Protected konstruktor Instance metodus, amivel lekérdezhetjük és létre is hozzuk az egyetlen példányt s1,s2 pointerek az egyetlen Singleton objektumra © Nagy Csaba
Szegedi Tudományegyetem – Szoftverfejlesztés Tanszék Singleton példa © Nagy Csaba
Szegedi Tudományegyetem – Szoftverfejlesztés Tanszék Visitor Cél: objektum-hierarchián végezhető művelet reprezentálása az osztályok megváltoztatása nélkül Alkalmazhatóság: több független műveletet kell elvégezni egy objektum-struktúrán (az osztályok „beszennyezése” nélkül) a struktúrát meghatározó osztályok ritkán változnak, új műveleteket viszont sűrűn definiálhatunk © Nagy Csaba
Szegedi Tudományegyetem – Szoftverfejlesztés Tanszék Visitor © Nagy Csaba
Szegedi Tudományegyetem – Szoftverfejlesztés Tanszék Visitor példa Composite mintánál vizsgált számítógép alkatrészek példája Van két számítógép konfiguráció, különböző árkategóriájú alkatrészekkel Az alkatrészeknek van egy drága és egy olcsó ára Két különböző konfigurációjú számítógép árát számoljuk ki két különböző visitorral! © Nagy Csaba
Szegedi Tudományegyetem – Szoftverfejlesztés Tanszék Visitor példa Element – CompositeElement Composite pattern: Component - Equipment Composite – CompositeEquipment Specializáljuk a Composite-ot: Szgep, Lap Leaf FloppyDisk,Processzor, Alaplap Visitor – EquipmentVisitor ConcreteVisitor – Conf_1_Visitor, Conf_2_Visitor © Nagy Csaba
Szegedi Tudományegyetem – Szoftverfejlesztés Tanszék Visitor példa © Nagy Csaba
Szegedi Tudományegyetem – Szoftverfejlesztés Tanszék Abstract Factory Cél: kapcsolódó vagy függő objektumcsaládok létrehozása a konkrét osztály megnevezése nélkül Alkalmazhatóság: rendszer független a termékek szerkezetétől, gyártásától több termékcsalád kell hogy legyen termékcsalád termékeit együtt kell használni termékek implementációja rejtett, interfész adott © Nagy Csaba
Szegedi Tudományegyetem – Szoftverfejlesztés Tanszék Abstract Factory © Nagy Csaba
Szegedi Tudományegyetem – Szoftverfejlesztés Tanszék Abstract Factory példa Beolvasunk egy szöveget és a hosszától függően dőlt vagy vastag betűs szövegként jelenítjük meg. A megoldáshoz definiálunk egy ItalicsWord és egy BoldWord osztályt, a szöveg hosszától függően a megfelelő formájúvá alakítjuk, azaz a megfelelő osztályt példányosítjuk. © Nagy Csaba
Szegedi Tudományegyetem – Szoftverfejlesztés Tanszék Abstract Factory példa – AbstractFactory.cpp AbstractFactory – Abstract Factory ConcreteFactory – ItalicsFactory, BoldFactory AbstractProduct – AbstractWord ConcreteProduct – ItalicsWord, BoldWord © Nagy Csaba
Szegedi Tudományegyetem – Szoftverfejlesztés Tanszék Abstract Factory példa © Nagy Csaba