Wzorce projektowe – dekoratory

decoratorDekorator to jeden se strukturalnych wzorców projektowych, dzięki któremu możemy wykorzystać kompozycję w alternatywie do dziedziczenia w celu rozszerzenia zachowania klasy.
W przypadku dziedziczenia klasa rozszerzana jest w trakcie kompilacji w przeciwieństwie do dekoratorów, które rozszerzają klasy w trakcie działania programu.

 

 

Wzorzec projektowy Dekorator pozwala na dynamiczne przydzielanie danemu obiektowi nowych zachowań. Dekoratory dają elastyczność podobną do tej, jaką daje dziedziczenie, oferując jednak w zamian znacznie rozszerzoną funkcjonalność

Czytaj dalej

Wzorce projektowe – fabryki

Factory_1Za każdym razem gdy używamy w kodzie operatora new, uzależniamy się od konkretnej implementacji zamiast od interfejsu. Jedna z zasad programowania obiektowego (reguła odwracania zależności / dependency inversion principle) mówi:

 

Uzależniaj kod od abstrakcji, a nie od klas rzeczywistych.

Zapewne każdy programista spotkał się ze składnią:

Wcześniej czy później z pewnością zmienią się wymagania i zajdzie konieczność rozbudowy programu. Nie obejdzie się bez modyfikacji istniejącego kodu. Wtedy zostanie złamana zasada open/closed:

System powinien być otwarty na rozbudowę, ale zamknięty na modyfikacje.

Można zauaważyć że fragmentem kodu mogącym ulegać zmianom będzie instrukcja warunkowa if/else zwracająca konkretny produkt w zależności od przekazywanego parametru. Ten fragment kodu nie jest zamknięty na zmiany, ponieważ gdy zajdzie konieczność dodania nowego produktu lub usunięcie istniejącego będziemy musieli wrócić do tego miejsca i wykonać aktualizację.

Czytaj dalej

Wzorce projektowe – singleton

Singleton – jeden ze wzorców konstrukcyjnych. Jego celem jest zapewnienie możliwości utworzenia tylko jednego obiektu danej klasy i zapewnienie do niego globalnego dostępu.

Przez wielu uważany za antywzorzec, głównie ze względu na ograniczoną możliwość testowania kodu. Pomijając kwestie słuszności jego wykorzystania przedstawię jego poprawną implementację, co nie jest trywialne jakby mogło się wydawać.

Czytaj dalej