Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
OpublikowałTeresa Kowalczyk Został zmieniony 9 lat temu
1
Obiektowe metody projektowania systemów Abstract Factory design pattern (aka. Kit)
2
Wstęp: Abstract Factory – wzorzec kreacyjny pracujący w zakresie obiektowym Intencja – Udostępnić interfejs, służący tworzeniu rodzin powiązanych lub zależnych obiektów bez wyspecyfikowania konkretnej klasy.
3
Plan: Powody utworzenia, motywacja Zastosowanie Przykłady implementacji w C++ Struktura i elementy składowe Konsekwencje użycia Powiązania z innymi wzorcami Bibliografia
4
Powody utworzenia, motywacja Tworzenie obiektów klas produktów należących do tej samej rodziny Potrzeba zmieniania całej wyspecjalizowanej rodziny obiektów, przy zachowaniu tych samych algorytmów Przykład: podmienianie kontrolek dla różnych platform (MFC, Motif)
5
Zastosowanie System powinien być niezależny od tego jak produkty są tworzone, komponowane i reprezentowane. System może używać jednej z wielu rodzin produktów. Potrzebujemy spójnych rodzin, które są zawsze razem.
6
Przykłady implementacji w C++ (z użyciem factory method i ew. singleton) class AbstractFactory { public: AbstractFactory(); // dla singletona to powędruje do private // AbstractFactory* GetFactoryInstance(int* params); // dla singletona // tu używamy FactoryMethod dla każdego produktu virtual Product1* MakeProduct1() { return new Product1; } virtual Product2* MakeProduct2() { return new Product2; } virtual Product3* MakeProduct3(int param1) { return new Product3(param1); } virtual Product4* MakeProduct4(int param1, int param2) { return new Product4(param1, param2); } //private: //static AbstractFactory *instance; // przygotowanie pod singletona };
7
Struktura i elementy składowe
8
Konsekwencje użycia Zalety. Izoluje konkretne klasy. Czyni podmienianie rodzin produktów łatwiejszym. Nakłania do zachowania konsystencji wsród produktów. Ale! Dokładanie produktów do rodzin jest trudne.
9
Powiązania z innymi wzorcami Abstract Factory jest często implementowane z wykorzystaniem Factory Method. Jest to eleganckie i czytelne rozwiązanie. Ale ma wady… Można użyć Prototype, zamiast FM. Konkretne fabryki są często Singletonami
10
Podsumowanie: Klasa Factory pozwala zbudować system w oparciu o funcjonalność rodzin abstrakcyjnych produktów, z drugiej strony tworzyć odmienne realizacje w oddzielnych rodzinach. Czyli mamy wysoce elastyczny i elegancki kod, z oddzieloną implementacją szczegółów od meritum problemu.
11
Bibliografia: Gamma E.,Helm R.,Johnson R., Vlissides J.: Design Patterns: Elements of Reusable Object-Oriented Software, Addison-Wesley, 1995 http://c2.com/cgi/wiki?AbstractFactory http://hillside.net/patterns/ http://en.wikipedia.org/wiki/Abstract_factory_pattern Alexandrescu A.: Modern C++ Design, Addison- Wesley, 2001 http://sourceforge.net/projects/loki-lib/
12
...i to by było tyle na dzisiaj!
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.