Obiektowe metody projektowania systemów Abstract Factory design pattern (aka. Kit)

Slides:



Advertisements
Podobne prezentacje
C++ wykład 9 ( ) Szablony.
Advertisements

Wzorce Projektowe Bartosz Baliś, Na podstawie
Klasy abstrakcyjne i interfejsy
Programowanie obiektowe
Programowanie obiektowe
Wzorce.
Zaawansowane metody programowania – Wykład V
Generics w .NET 2.0 Łukasz Rzeszot.
Obiektowe metody projektowania systemów Design Patterns STRATEGY.
Bezpieczeństwo wyjątków w C++: OpenGL
Programowanie w środowisku sieciowym
Dziedziczenie wieloaspektowe
Implementacja ekstensji klasy
Budowa i integracja systemów informacyjnych
Programowanie Obiektowe w Javie (c.d.)
Programowanie obiektowe w Javie
OOPC++ - wstêp, klasy1 Klasy Do struktury można dołączyć operacje działające na jej polach. struct date { int day, month, year; void set (int d, int m,
W ZORCE P ROJEKTOWE … czyli ktoś już rozwiązał Twoje problemy!
Szkolenie dla NaviExpert,
Projektowanie oprogramowania
Organizacja Przedsięwzięć Programistycznych Projektowanie
Obiektowe metody projektowania systemów
Obiektowe metody projektowania systemów
Obiektowe metody projektowania systemów Command Pattern.
czyli (anty)wzorzec Singleton
czyli (anty)wzorzec Singleton
Wzorce projektowe (Design Patterns)
Wstęp do kontenerów IoC
Test Doubles Adam Gabryś , v1.1,
Projektowanie obiektowe
Java 3 MPDI Programowanie obiektowe W7. import java.io.*; public class X { // kontrukcja throws – określenie jakie wyjątki może dana metoda // sygnalizować
Generatory dokumentacji kodu źródłowego
Programowanie obiektowe III rok EiT
Programowanie obiektowe – zastosowanie języka Java SE
Java – coś na temat Klas Piotr Rosik
INTERFEJSY I KLASY WEWNĘTRZNE
Programowanie obiektowe Wykład 3 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/21 Dariusz Wardowski.
Programowanie obiektowe Wykład 7 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/20 Dariusz Wardowski.
Programowanie obiektowe Wykład 6 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/14 Dariusz Wardowski.
Projektowanie obiektowe
Projektowanie obiektowe
Programowanie obiektowe 2013/2014
Zawansowane techniki programistyczne
OCPJP Inner classes.
Dobry kod OO Jeżeli zapytamy statystycznego programistę z czym kojarzy mu się dobry kod OO to najprawdopodobniej będzie mówił o wzorcach projektowych.
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski informatyka +
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski informatyka +
Wzorce projektowe Jacek Matulewski
Diagram klas Kluczowymi elementami są: klasy (class)
Walidacja danych alina suchomska.
K URS JĘZYKA C++ – WYKŁAD 6 ( ) Polimorfizm.
Programowanie obiektowe Wykład 9 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/15 Dariusz Wardowski.
OOP, Desing Patterns … and more Michał Dubel
Obiektowe metody projektowania systemów The Composite DESIGN PATTERN.
Design Patterns.: Visitor :.. Plan prezentacji 1. Trochę statystyk. 2. Zadanie problemowe. 3. Rozwiązanie… Visitor. 4. Visitor w UML (a,b,c). 5. Implementacja.
Obiektowe metody projektowania systemów Adapter. Wstęp: „Dostosowanie interfejsu klasy do interfejsu, którego oczekuje użytkownik. Adapter umożliwia współprace.
Zakres Wzorce projektowe - kreacyjne -Factory Method -Abstract Factory.
Paweł Starzyk Obiektowe metody projektowania systemów
Wzorce Projektowe w JAVA
Partnerstwo dla Przyszłości 1 Lekcja 27 Klasy i obiekty.
Inżynieria oprogramowania Wzorce konstrukcyjne WWW: Jacek Matulewski Instytut Fizyki, UMK.
C++ mgr inż. Tomasz Turba Politechnika Opolska 2016.
Programowanie Obiektowe – Wykład 6
Wzorzec MVC na przykładzie CakePHP
Wątki, programowanie współbieżne
Klasy, pola, obiekty, metody. Modyfikatory dostępu, hermetyzacja
(według:
Programowanie Obiektowe – Wykład 2
Zdarzenia (eventy) Zdarzenia służą do powiadomienia użytkownika, gdy w używanej klasie dojdzie do pewnych wydarzeń zdefiniowanych przez twórcę klasy.
PGO - Projektowanie i implementacja pierwszych klas
Zapis prezentacji:

Obiektowe metody projektowania systemów Abstract Factory design pattern (aka. Kit)

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.

Plan: Powody utworzenia, motywacja Zastosowanie Przykłady implementacji w C++ Struktura i elementy składowe Konsekwencje użycia Powiązania z innymi wzorcami Bibliografia

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)

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.

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 };

Struktura i elementy składowe

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.

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

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.

Bibliografia: Gamma E.,Helm R.,Johnson R., Vlissides J.: Design Patterns: Elements of Reusable Object-Oriented Software, Addison-Wesley, Alexandrescu A.: Modern C++ Design, Addison- Wesley,

...i to by było tyle na dzisiaj!