12.07.2015 Views

Podsumowanie wzorców projektowych GoF

Podsumowanie wzorców projektowych GoF

Podsumowanie wzorców projektowych GoF

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

3. Factory MethodPrzeznaczenie (cytat z ksiki <strong>GoF</strong>):Wzorzec ten okrela interfejs do tworzenia obiektów, lecz umoliwia podklasom decydowanieo tym, której klasy ma to by obiekt. Dziki Factory Method klasy mog zda si na podklasyw kwestii tworzenia egzemplarzy.Przeznaczenie (cytat z fluffycat):Metody do tworzenia i uzyskiwania elementów jednego obiektu na wiele sposobów.The Factory Method can make a set of objects, with the objects created only as a set.Opis: Przykład pokazuje, w jaki sposób klient moe zamówi (zobaczy) zestawy zupoferowane przez poszczególnych dostawców. W tym celu najpierw wybiera dostawc, anastpnie z oferowanych da wybiera zupy i z zup tak, jakiej sobie yczy.Innym przykładem moe by znalezienie przez klienta w menu zestawu gotowych da iwybranie takiego zestawu o zadanym numerze, np. „zestaw nr 2 prosz!”.Przykład ten zawiera konkretn fabryk zdoln do produkcji jednego zbioru obiektów, zatemaby uzyska taki zestaw obiektów, jaki si chce trzeba utworzy odpowiedni dla podanegozestawu fabryk.Problem: Jak uniezaleni kod klienta od informacji zarówno o wszystkich moliwychzestawach u wszystkich moliwych klientów jak i od sposobu konstruowania konkretnychobiektów wchodzcych w skład tych zestawów?Rozwizanie: Przez stworzenie fabryki tworzcej takie zestawy da.Modyfikacje: zamiast definiowania konkretnej fabryki zdolnej do produkcji jednego zbioruobiektów mona utworzy fabryk zdoln do stworzenia zestawu jednego lub wicejdowolnych obiektów okrelonych przez parametr przekazywany do tej fabryki (por.PHP Design Patterns/Factory Method ).Klasa główna:_DP_C_<strong>GoF</strong>_FactoryMethodpackage pk.dydakt.to.dp.c.gof.factorymethod;import pk.dydakt.to.dp.c.gof.soups.SoupBuffet;public class _DP_C_<strong>GoF</strong>_FactoryMethod {public static void main(String[] args) {SoupFactoryMethod soupFactoryMethod =new SoupFactoryMethod();SoupBuffet soupBuffet =soupFactoryMethod.makeSoupBuffet();soupBuffet.setSoupBuffetName(soupFactoryMethod.makeBuffetName());soupBuffet.setChickenSoup(soupFactoryMethod.makeChickenSoup());soupBuffet.setClamChowder(soupFactoryMethod.makeClamChowder());14

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

Saved successfully!

Ooh no, something went wrong!