Wzorce projektowe

Wzorce projektowe to typowe rozwiązania problemów często napotykanych przy projektowaniu oprogramowania. Stanowią coś na kształt gotowych planów które można dostosować, aby rozwiązać powtarzający się problem w kodzie. Wzorzec nie jest konkretnym fragmentem kodu, ale ogólną koncepcją pozwalającą rozwiązać dany problem. Postępując według wzorca możesz zaimplementować rozwiązanie które będzie pasować do realiów twojego programu.
Wszystkie wzorce projektowe można podzielić na 3 grupu: wzorce kreacyjne, strukturalne i behawioralne.
Poniżej krótko omawiam po jednym ze wzorców z każdej grupy. Jak również dołączam linki do kodów żródłowych, programów dających ten sam efekt końcowy jednak napisanych bez zastosowania wzorca jak i z zastosowanym wzorcem projektowym.


builder

Builder / Budowniczy

Budowniczy jest kreacyjnym wzorcem projektowym, który daje możliwość tworzenia złożonych obiektów etapami, krok po kroku. Wzorzec ten pozwala produkować różne typy oraz reprezentacje obiektu używając tego samego kodu konstrukcyjnego.

Zastosowanie
  • Stosuj wzorzec Budowniczy, aby pozbyć się “teleskopowych konstruktorów”
  • Stosuj wzorzec Budowniczy, gdy potrzebujesz możliwości tworzenia różnych reprezentacji jakiegoś produktu.
  • Stosuj ten wzorzec do konstruowania drzew kompozytowych lub innych złożonych obiektów.



Command / Polecenie

Polecenie jest behawioralnym wzorcem projektowym który zmienia żądanie w samodzielny obiekt zawierający wszystkie informacje o tym żądaniu. Taka transformacja pozwala na parametryzowanie metod przy użyciu różnych żądań. Oprócz tego umożliwia opóźnianie lub kolejkowanie wykonywania żądań oraz pozwala na cofanie operacji.

  • Zastosuj wzorzec Polecenie gdy chcesz parametryzować obiekty za pomocą działań.
  • Wzorzec Polecenie pozwala układać kolejki zadań, ustalać harmonogram ich wykonania bądź uruchamiać je zdalnie.
  • Stosuj wzorzec Polecenie gdy chcesz zaimplementować operacje odwracalne.
Command



facade

Facade / Fasada


Fasada jest strukturalnym wzorcem projektowym, który wyposaża bibliotekę, framework lub inny złożony zestaw klas w uproszczony interfejs.

  • Użyj wzorca Fasada gdy potrzebujesz ograniczonego, ale łatwego w użyciu interfejsu do złożonego podsystemu.
  • Stosuj Fasadę gdy chcesz ustrukturyzować podsystem w warstwy.