Wzorce projektowe - wprowadzenie

Definicja

„Wzorzec opisuje problem występujący wielokrotnie w danym środowisku, pokazując podstawowe rozwiązanie tego problemu dane w taki sposób, aby można wielokrotnie użyć tego rozwiązania do wszystkich wystąpień danego problemu, bez konieczności ponownego wykonywania tych samych czynności projektowych”

Christopher Alexander, A Pattern Language, 1977

„Opis komunikujących się obiektów i klas, które przerabia się w celu rozwiązania ogólnego problemu projektowego przy dokładnie określonym kontekście”

GangOfFour, 1994

„Design Patterns help you to learn from others successes instead of your own failure”

Mark Johnson

Zalety wzorców projektowych

  1. Wskazują sposoby tworzenia całych systemów posiadających cechy charakterystyczne dobrych projektów zorientowanych obiektowo.

  2. Znakomicie sprawdziły się w wielu rzeczywistych aplikacjach systemów zorientowanych obiektowo.

  3. Nie udostępniają gotowego kodu, a jedynie ogólne sposoby rozwiązywania problemów pojawiających się w fazie projektowania.

  4. Wzorce odnoszą się do sytuacji, w których w danym oprogramowaniu muszą zostać dokonane określone zmiany.

  5. Większość wzorców umożliwia modyfikowanie pewnych fragmentów systemu całkowicie niezależnie od pozostałych elementów systemu.

  6. Wybrane wzorce umożliwiają hermetyzację elementów, które się w danym systemie często podlegają zmianom.

  7. Wzorce zapewniają rodzaj wspólnego, jednolitego języka, który może maksymalizować efektywność komunikacji pomiędzy poszczególnymi członkami zespołu.

Elementy wzorca projektowego

Wzorzec projektowy ma cztery zasadnicze elementy:

  1. Nazwa wzorca – skrót, którego można użyć do zwięzłego określenia problemu projektowego, jego rozwiązania i konsekwencji. Umożliwia projektowanie na wyższym poziomie abstrakcji.

  2. Kontekst/Problem – określa, kiedy stosować dany wzorzec.

  3. Rozwiązanie – opis elementów składających się na rozwiązanie zdefiniowanego problemu, ich związki, zobowiązania i współpraca. Nie opisuje konkretnego projektu lub implementacji.

  4. Konsekwencje – zalety oraz wady zastosowania wzorca.

Wzorzec dostarcza abstrakcyjnego opisu problemu projektowego i tego jak ogólny układ elementów (klas i obiektów) rozwiązuje ten problem.

Atrybuty wzorca

_images/atrybuty.png

Opis wzorców projektowych

  1. Nazwa wzorca i jego kategoria – odzwierciedla problem, rozwiązanie i konsekwencje danego wzorca.

  2. Przeznaczenie/Kontekst – co robi ten wzorzec projektowy i jakich szczególnych zagadnień lub problemów projektowych dotyczy.

  3. Rozwiązanie (Struktura/Uczestnicy/Współpraca) – opisuje uniwersalne rozwiązanie problemu - elementy tworzące projekt, ich relacje, odpowiedzialności oraz współpracę.

  4. Konsekwencje – rezultaty zastosowania – rachunek korzyści i strat stosowania wzorca.

  5. Implementacja – przykład implementacji wzorca, pułapki/wskazówki/techniki implementacyjne wzorca.

  6. Wzorce pokrewne – lista wzorców projektowych, które są związane z danym wzorcem.

Klasyfikacja GOF

  1. Kreacyjne (Creational) – dotyczą procesu tworzenia obiektów

  2. Strukturalne (Structural) – dotyczą struktury klas lub obiektów

  3. Behawioralne (Behavioral) – charakteryzują sposób, w jaki klasy lub obiekty oddziałują między sobą i dzielą odpowiedzialności

Katalog

_images/table_patterns.png