12.07.2015 Views

Podsumowanie wzorców projektowych GoF

Podsumowanie wzorców projektowych GoF

Podsumowanie wzorców projektowych GoF

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

2. Abstract FactoryPrzeznaczenie (cytat z ksiki <strong>GoF</strong>):Wzorzec ten zapewnia interfejs umoliwiajcy tworzenie rodzin powizanych ze sob lubzalenych od siebie obiektów bez specyfikowania ich klas konkretnych.Przeznaczenie (cytat z fluffycat):Zbiór metod do tworzenia rónych obiektów.(Wzorzec zawiera róne metody do tworzenia rónych obiektów na róne sposoby.)The Abstract Factory can make a number of related objects, with each object createdindividually.Opis: Przykład ilustruje zamawianie przez klienta zupy dnia od dostawcy zupy z wybranejwczeniej lokalizacji. Moe si to odbywa np. poprzez serwis internetowy do zamawianiaposiłków z dostaw do domu. Warto zauway, e kalendarz jest wspólny dla wszystkichdostawców i dlatego moe by umieszczony w klasie klienta. Mona jednak ten kalendarzuczyni specyficznym dla poszczególnych dostawców pozbywajc si tym samym wiedzy natemat tego, jakie mamy zupy dnia do dyspozycji kadego dnia z klasy klienta. Wiedza tamoe by ukryta u dostawcy. Czy jednak takie rozwizanie nie byłoby nieco ryzykowne dlaklienta? Moe klient woli najpierw wiedzie, jak zup moe wybra danego dnia, a potemwybra swojego ulubionego dostawc tej zupy. Tak włanie jest w przykładzie, ale włanie ztego powodu nie pokazuje on pełni zalet tego wzorca.Mona te ten nie tyle przykład, co problem odnie do zamawiania posiłku w restauracjipoprzez skomponowanie da z menu (w odrónieniu od wzorca projektowego FactoryMethod, który kojarzy si raczej z wyborem konkretnego gotowego ju zestawu z menu).Moe te warto skorzysta z porównania wzorca Builder - tam szef kuchni tworzy zestaw zupdnia na polecenie kierownika restauracji, który zostawia mu woln rk - nie wtrca si doprocesu produkcji, a jedynie na kocu, gdy gotowa jest zarówno lista zup dnia jak i samezupy dostaje informacj o tym, e wszystko jest gotowe. Tutaj wtrca si do procesu, alejako nie widz tego w kodzie!?Problem: Jak uniezaleni si w kodzie klienta od potrzeby konstruowania docelowychobiektów (zupa dnia)? W jaki sposób przekaza t funkcjonalno gdzie indziej (fabrykikonkretne), aby kod klienta nie musiał zna wszystkich konkretnych klas docelowychobiektów (wszystkie zupy dnia we wszystkich lokalizacjach)?Mona przy pomocy tego wzorca konstruowa obiekty złoone (ale te proste). Wodrónieniu od wzorca projektowego Builder kładzie si tu nacisk na rodziny produktówzamiast na tworzenie obiektów krok po kroku, równie w odrónieniu od tamtego wzorcaprodukt jest przekazywany natychmiast a nie na kocu.Wzorzec Abstract Factory moe by implementowany za pomoc Factory Methods.Rozwizanie: Przez stworzenie fabryk zajmujcych si tworzeniem obiektów docelowych, wtym fabryki abstrakcyjnej ustalajcej wspólny interfejs wszystkich fabryk konkretnych.Modyfikacje:Klasa główna:_DP_C_<strong>GoF</strong>_AbstractFactorypackage pk.dydakt.to.dp.c.gof.abstractfactory;10

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!