Wzorce projektowe kreacyjne Krzysztof Ciebiera 14 pa¹dziernika 2005 1
1 Wst p 1.1 Podstawy Opis Ogólny Podstawowe informacje Wzorce kreacyjne sªu» do uabstrakcyjniania procesu tworzenia obiektów. Znaczenie wzorców ro±nie wraz z wykorzystywaniem skªadania zamiast dziedziczenia. Wzorce kreacyjne kapsuªkuj wiedz o tym jakich klas u»ywa system. Wzorce kreacyjne ukrywaj w jaki sposób egzemplarze s tworzone i ª - czone ze sob. Uwaga Czasem bardzo trudno jest wybra jeden z wzorców, gdy» s one do siebie podobne. 1.2 Diagram klas prostej gry 2 Wzorce 2.1 Budowniczy Wzorzec Budowniczy (ang. Builder)
Wzorzec ten oddziela konstrukcj obiektów zªo»onych od ich reprezentacji, umo»- liwiaj c tym samym powstawanie w jednym procesie konstrukcyjnym ró»nych reprezentacji. Czytnik plików RTF. algorytm tworzenia obiektu powinien by niezale»ny od cz ±ci skªadowych tego obiektu i sposobu ich zestawienia, proces konstruowania musi uwzgl dnia ró»ne reprezentacje konstruowanego obiektu. Struktura budowniczego Wspóªpraca Klient tworzy obiekt Kierownik i konguruje go za pomoc po» danego obiektu Budowniczy. Kierownik informuje budowniczego o potrzebie zbudowania cz ±ci produktu. Budowniczy przetwarza» dania kierownika i dodaje cz ±ci do produktu Klient odbiera produkt od budowniczego. 2
Konsekwencje Konsekwencje Umo»liwienie zmiany wewn trznej reprezentacji produktu. Oddzielenie kodu sªu» cego do konstruowania od reprezentacji. Lepsza kontrola procesu konstruowania. 2.2 Fabryka Abstrakcyjna Fabryka Abstrakcyjna (ang. Abstract Factory) Wzorzec ten oddziela konstrukcj obiektów zªo»onych od ich reprezentacji, umo»- liwiaj c tym samym powstawanie w jednym procesie konstrukcyjnym ró»nych reprezentacji. System który ma obsªugiwa bazy MySQL i Postgres. fabryki abstrakcyjnej system powinien by niezale»ny od tego, jak jego produkty s tworzone, skªadane i reprezentowane system powinien by kongurowany przy u»yciu jednej z wielu rodzin produktów rodzina zwi zanych ze sob obiektów-produktów jest zaprojektowana tak, by te obiekty byªy u»ywane razem, a nam zale»y na zachowaniu tego ograniczenia chcemy dostarczy bibliotek klas produktów, ujawniaj c jedynie ich interfejsy, a nie implementacje Struktura fabryki abstrakcyjnej 3
2.3 Metoda Wytwórcza Metoda Wytwórcza (ang. Factory Method) Wzorzec ten okre±la interfejs do tworzenia obiektów, lecz umo»liwia podklasom decydowanie o tym, której klasy ma to by obiekt. Dzi ki Metodzie Wytwórczej klasy mog zda si na podklasy w kwestii tworzenia egzemplarzy. Zr b aplikacji MDI. metod wytwórczych klasa nie mo»e przewidzie, jakich klas obiekty musi tworzy klasa chce, by to jej podklasy specykowaªy tworzone przez ni obiekty klasy przekazuj odpowiedzialno± jednej z kilku podklas pomocniczych, a Ty chcesz tylko w jednym miejscu ustali, która z podklas pomocniczych jest ich delegatem Struktura fabryki abstrakcyjnej 4
2.4 Prototyp Prototyp (ang. Prototype) Wzorzec ten specykuje rodzaje tworzonych obiektów, u»ywaj c prototypowego egzemplarza, a tak»e tworzy nowe obiekty, kopiuj c ten prototyp. Narz dziegraczne w zr bie MDI. prototypu klasy, których egzemplarze chcesz tworzy, s specykowane w czasie wykonywania programu, na przykªad przez dynamiczne ªadowanie chcesz unikn budowania hierarchii klas fabryk, która jest porównywalna z hierarchi klas produktów, stan obiektów klasy mo»e przyjmowa tylko jedn z kilku ró»nych warto±ci; mo»e by wówczas wygodniej zainstalowa odpowiedni liczb prototypów i klonowa je ni» r cznie tworzy egzemplarze klasy, za ka»dym razem z odpowiednim stanem Struktura Prototypu 5
6