Tablice_informatyczne_Wzorce_projektowe_tiwzop.pdf

(147 KB) Pobierz
WZORCE PROJEKTOWE
TABLICE INFORMATYCZNE •
Daniel Krasnokucki
Wzorzec opisuje problem, który powtarza się wielokrotnie
w danym środowisku, oraz podaje istotę jego rozwiązania
w taki sposób, aby można było je zastosować miliony razy
bez potrzeby powtarzania tej samej pracy.
Christopher Alexander „A pattern language”, 1977
Zapisywanie stanu iteracji
Budowniczy
Tworzenie złożonych obiektów
Iterator
Wyliczanie
elementów
Pamiątka
Definicja sposobu przechodzenia
Dodawanie
operacji
Definicja
łańcucha
Łańcuch
zobowiązań
Zapobieganie
histerezie
Dekorator
Dodawanie zadań
do obiektów
Odwiedzający
WPROWADZENIE
Tablice pomogą Ci szybko przypomnieć sobie poszczególne
wzorce projektowe oraz ich zastosowanie. Tablice napisane
są w oparciu o książkę
Wzorce projektowe. Elementy opro-
gramowania obiektowego wielokrotnego użytku
i opisują
wzorce skatalogowane przez Gang Czworga.
Zalety i wady poszczególnych wzorców mogą być wywnio-
skowane z ich opisów i podanego przykładowego zastoso-
wania, nie oceniałem ich jawnie, bo wszystko zawsze zależy
od projektu, kodu i programisty. Pamiętać należy także, że źle
zastosowany wzorzec może przekształcić się w antywzorzec.
Kompozyt
Zmiana wyglądu
Pyłek
Współdzielenie
strategii
Współdzielenie
obiektów
złożonych
Składane
z użyciem
Polecenie
Dodawanie
operacji
Strategia
Definiowanie kroków algorytmu
Metoda
szablonowa
Częste wykorzystywanie
Metoda
wytwórcza
Współdzielenie symboli
końcowych
Interpreter
Relacje pomiędzy wzorcami
Obok przedstawiono zależności pomiędzy wzorcami opisa-
nymi w niniejszych tablicach.
Współdzielenie
stanów
Stan
Obserwator
Zarządzanie
zależnościami
Mediator
Wzorce
konstrukcyjne
Wzorce
strukturalne
Wzorce
operacyjne
Implementowana za pomocą
Fabryka
abstrakcyjna
Pojedyncza
Singleton
Dynamiczna
konfiguracja
fabryki
Pojedyncza
Prototyp
Fasada
WZORCE KONSTRUKCYJNE (KREACYJNE)
Pozwalają w sposób abstrakcyjny tworzyć i konfigurować obiekty w celu ich wielokrotnego użycia i zachowania niezależności
systemu od sposobu ich tworzenia.
Budowniczy
Dyrektor
Budowniczy
nadzoruje
PRZEZNACZENIE
Wzorzec ten umożliwia tworzenie wielu takich samych obiek-
tów o różnej konfiguracji — oddziela tworzenie obiektów od
ich reprezentacji. Za konfigurację poszczególnych obiektów
są odpowiedzialne wyspecjalizowane klasy, które implemen-
tują interfejs podstawowego obiektu Builder.
-budowniczy : Budowniczy
+Buduj()
+BudujCzesc()
+BudujInnaCzesc()
IMPLEMENTACJA
1. Tworzymy instancję klasy KonkretnyBudowniczy, która
stworzy oczekiwany przez nas rodzaj obiektu.
2. Tworzymy instancję klasy Dyrektor i przekazujemy do
niej referencję budowniczego.
3. Wywołujemy metodę konstrukcji budynku w powyż-
szym obiekcie (dyrektor), która zapewni użycie odpo-
wiedniej sekwencji metod budowniczego (dyrektor
zleca wykonanie budowniczemu według określonych
zasad).
4. Po stworzeniu budynku odbieramy (pobieramy) go od
naszego budowniczego.
Wykonywane dla każdego obiektu:
{
budowniczy->BudujCzesc();
budwniczy->BudujInnaCzesc();
}
KonkretnyBudowniczy
+BudujCzesc()
+BudujInnaCzesc()
+PobierzWynik(): Budynek
tworzy
JakisBudynek
+Czesc
+InnaCzesc
PRZYKŁADY ZASTOSOWANIA
• tworzenie węzłów XML-a lub HTML-a zależnych od
działania programu;
• konwertowanie tekstu, zdjęć, muzyki, wideo — algo-
rytm odczytujący dane będzie niezależny od zapisu-
jącego, a dane wyjściowe mogą być tworzone przez
wiele podobnych obiektów w zależności od formatu.
Fabryka abstrakcyjna
PRZEZNACZENIE
Umożliwia tworzenie rodzin zależnych lub spokrewnionych
obiektów w sposób abstrakcyjny, bez opisywania konkret-
nych klas.
Klient
PRZYKŁADY ZASTOSOWANIA
• utworzenie rodziny implementacji różnych interfejsów,
która będzie odpowiadała za komunikację z dostęp-
nym API;
• implementacja wyświetlania tekstu w różnych typach
plików, takich jak pdf, doc, html itp.
• obsługa różnych typów baz danych.
IMPLEMENTACJA
1. Przy implementacji wykorzystywana jest kompozycja.
2. Fabryka zwraca całą rodzinę powiązanych ze sobą
obiektów. Zazwyczaj do tworzenia obiektów wyko-
rzystywana jest metoda wytwórcza.
<<Interface>>
<<Interface>>
FabrykaAbstrakcyjna
+StworzProdukt() : AbstrakcyjnyProdukt
AbstrakcyjnyProdukt
SpecyficznaFabryka
+StworzProdukt() : AbstrakcyjnyProdukt
produkuje
SpecyficznyProdukt
Produkt
Zgłoś jeśli naruszono regulamin