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.

4. BuilderPrzeznaczenie (cytat z ksiki <strong>GoF</strong>):Wzorzec ten oddziela konstrukcj obiektów złoonych od ich reprezentacji, umoliwiajc tymsamym powstanie w jednym procesie konstrukcyjnym rónych reprezentacji.Przeznaczenie (cytat z fluffycat):Tworzy i udostpnia jeden obiekt na wiele sposobów.Opis: Przykład pokazuje jak stworzy obiekt złoony, jakim jest zestaw zup dnia. Obiekt tenjest w odrónieniu od wzorca projektowego Abstract Factory tworzony krok po kroku izwracany dopiero po utworzeniu całoci. Odpowiada to sytuacji, w której np. kierownik danejlokalizacji sieci restauracji wydaje szefowi kuchni polecenie opracowania i stworzenia nadany dzie zestawu zup dnia. Dla kadej grupy zup trzeba okreli jej reprezentanta, którybdzie zup dnia. Szef kuchni ma pełn swobod zarówno w okrelaniu zup dnia jak i w ichprzyrzdzeniu. Gdy lista zup dnia jest gotowa szef kuchni zleca ich przygotowanie, anastpnie, gdy zupy s ju gotowe informuje kierownika o tym fakcie udostpniajc murównie list zup. W ten sposób nie angauje kierownika we własny proces decyzyjny -kierownik oczekuje wykonania zadania w całoci.Problem: Jak budowniczy moe stworzy złoone produkty i udostpni je kierownikowi wcałoci, gdy ju bd gotowe.Rozwizanie:Klasa główna:_DP_C_<strong>GoF</strong>_Builderpackage pk.dydakt.to.dp.c.gof.builder;import pk.dydakt.to.dp.c.gof.soups.*;public class _DP_C_<strong>GoF</strong>_Builder {public static SoupBuffet CreateSoupBuffet(SoupBuffetBuilder soupBuffetBuilder) {soupBuffetBuilder.buildSoupBuffet();soupBuffetBuilder.setSoupBuffetName();soupBuffetBuilder.buildChickenSoup();soupBuffetBuilder.buildClamChowder();soupBuffetBuilder.buildFishChowder();soupBuffetBuilder.buildMinnestrone();soupBuffetBuilder.buildPastaFazul();soupBuffetBuilder.buildTofuSoup();soupBuffetBuilder.buildVegetableSoup();}return soupBuffetBuilder.getSoupBuffet();public static void main(String[] args) {SoupBuffet bostonSoupBuffet =CreateSoupBuffet(new BostonSoupBuffetBuilder());System.out.println("At the " +bostonSoupBuffet.getSoupBuffetName() +18

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

Saved successfully!

Ooh no, something went wrong!