1 / 25

Zakres

Zakres. Wzorce projektowe - kreacyjne Factory Method Abstract Factory. Wzorce kreacyjne. Wzorce kreacyjne abstrahują proces tworzenia instancji obiektu. Ukrywają informacje o tym jak obiekt jest tworzony; w efekcie pomagaja uniezależnić system od tego jak obiekty są tworzone i komponowane.

linh
Download Presentation

Zakres

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Zakres • Wzorce projektowe - kreacyjne • Factory Method • Abstract Factory

  2. Wzorce kreacyjne Wzorce kreacyjne abstrahują proces tworzenia instancji obiektu. Ukrywają informacje o tym jak obiekt jest tworzony; w efekcie pomagaja uniezależnić system od tego jak obiekty są tworzone i komponowane

  3. Wzorce Factory • Wzorce kreacyjne klas – wykorzystują dziedziczenie do tworzenia instancji – Factory Method • Wzorce kreacyjne obiektów skupiają się na delegowaniu tworzenia instancji do innego obiektu – Abstract Factory

  4. Wzorce Factory Idiom dla tworzenia obiektu – w j. Java operator new Wzorce kreacyjne tworzą nowe obiekty nie używając jawnie new. Można pisać metody tworzące instancje różnych obiektów, które można rozszerzyć do tworzenia instancji nowo-tworzonych obiektów bez zmiany kodu.

  5. Factory Method: cel • Zdefiniować interfejs do tworzenia obiektu; podklasy decydują, której klasy instancję utworzyć. F.M. poleca klasie przekazać tworzenie instancji do podklasy

  6. Factory Method: wykorzystanie • Wykorzystujemy gdy: - klasa nie może określić, które obiekty mają być utworzone

  7. Factory method: uczestnicy • Product – definiuje interfejs typu obiektów tworzonych za pomocą FactoryMethod • ConcretProduct implementuje interfejs produktu • Creator deklaruje FactoryMethod, która zwraca obiekt typu Product • ConcretCreator nadpisuje FactoryMethod, aby zwrócić instancję ConcretProduct

  8. Factory Method: przykład1

  9. Factory Method: przykład2

  10. Factory Method: przykład2 (2) • Klasa MazeGame z metodą createMaze()

  11. Factory Method: przykład2 (3)

  12. Factory Method: przykład2 (4) • Dodajemy metody (factory methods)

  13. Factory Method: przykład2 (5)

  14. Factory Method: przykład2 (6) • createMaze() – bardziej złożony, ale elastyczny • Klasa EnchantedMazeGame • Metoda createMaze() z MazeGame jest dziedziczona

  15. Factory Method: przykład2 (7) • Metoda createMaze() z Mazegame przekazuje tworzenie obiektu maze do podklas (działanie wzorca F.M.) • Korelacje: Creator => MazeGame ConcreteCreator => EnchantedMazeGame (MazeGame jest też ConcreteCreator) Product => MapSite ConcreteProduct => Wall, Room, Door, EnchantedWall, • EnchantedRoom, EnchantedDoor

  16. Abstract Factory: cel • Dostarczyć interfejs dla utworzenia rodziny powiązanych lub zależnych obiektów bez specyfikowania ich konkretnych klas • Klasa deleguje odpowiedzialność tworzenia instancji obiektu do innego obiektu (przez kompozycję), a F.M. wykorzystuje dziedziczenie • Delegowany obiekt często wykorzystuje F.M. do tworzenia instancji

  17. Abstract Factory: przykład • Narzędzie tworzenia GUI z wieloma look-and-feels

  18. Abstract Factory: zastosowanie • System powinien być niezależny od tego jak są tworzone, komponowane i reprezentowane jego produkty • System musi wykorzystać jedną ze zbioru rodziny produktów • Rodzina powiązanych produktów produktów jest utworzona do wspólnego wykorzystania

  19. Abstract Factory: struktura

  20. Abstract Factory: zastosowanie • Zastosowanie do MazeGame – MazeFactory kolekcja factory methods (równocześnie Abstractfactory i Concretefactory)

  21. Abstract Factory: zastosowanie (1) • Metoda createMaze() z klasy MazeGame ma jako parametr MazeFactory

  22. Abstract Factory: zastosowanie (2) • createMaze() deleguje odpowiedzialnośc za tworzenie obiektu labirynt do obiektu MazeFactory

  23. Abstract Factory: zastosowanie (3) • Łatwo rozszerzyć MazeFactory do tworzenia innych

  24. Abstract Factory: konsekwencje • Izoluje klientów od implementacji konkretnych klas • Łatwa wymiana rodziny produktów, ponieważ poszczególna konkretna fabryka może wspomagać rodzinę produktów • Wspomaga wykorzystanie produktów z jednej rodziny • - nowy rodzaj produktu wymaga zmiany interfejsu Abstractfactory

  25. Abstract Factory: implementacja • Aplikacje typowo wykorzystują jedną instancję konkretnej fabryki • Wykorzystać w tym celu wzór Singleton

More Related