Wzorce projektowe

Wzorzec projektowy – OBSERVER

wzorzec behawioralny

Główne zadanie tego wzorca to przekazywanie informacji o zmianie stanu obiektu. Zbudowany jest z dwóch interfejsów: Observer (obserwator) i Observable (obserwowany). Observer jest obiektem, który obserwuje konkretny obiekt i odpowiednio reaguje na zmiany w nim zachodzące. Observable jest obiektem, który jest obserwowany przez wielu obserwatorów. Interfejs Observable powinien posiadać trzy metody, które umożliwią mu: dodanie nowego obserwatora, usunięcie istniejącego obserwatora oraz poinformowanie obserwatorów o wystąpieniu zmiany.

PRZYKŁAD – Jest trzech obserwatorów (profesor, doktor i student) reakcji utleniania roztworu glukozy. Robią notatki z przebiegu tej reakcji czyli obserwują kiedy nastąpi zmiana barwy (najpierw roztwór jest granatowy, potem zielony, czerwony i żółty). Obserwują reakcję w różnym czasie i muszą siebie wzajemnie informować czy zmiana już nastąpiła.

PRZED zastosowaniem wzorca

PO zastosowaniu wzorca

Wzorzec projektowy – FACTORY

wzorzec kreacyjny

Głównym zadaniem tego wzorca jest uproszczenie tworzenia nowych obiektów. Dzięki temu wzorcowi tworzymy warstwę abstrakycją, która jest odpowiedzialna za tworzenie instancji obiektów, które są powiązane ze sobą wspólnym interfejsem. Posiada on dwa bardzo ważne elementy: hermetyzację nowych obiektów (pozwala schować implementację tworzenia nowych obiektów) oraz abstrakcję. Istnieje on w trzech odmianach: fabryka prostametoda fabrykująca i fabryka abstrakcyjna. Fabryka prosta zwraca obiekt, który implementuje jeden interfejs, nie ma tutaj obecnego mechanizmu dziedziczenia ani kompozycji. Jest ona trudna do rozbudowy. Metoda fabrykująca również zwraca obiekt, który implementuje jeden interfejs i nie zawiera kompozycji ale zawsze występuje w niej mechanizm dziedziczenia. Dzięki obecności mechanizmu dziedziczenia i polimorfizmowi, ta metoda jest łatwa do rozbudowy. W fabryce abstrakcyjnej zawsze występuje mechanizm dziedziczenia i kompozycji. Jest ona nazywaną fabryką fabryk, ponieważ wykorzystując mechanizm kompozycji zwraca metody fabrykujące. 

PRZYKŁAD – W firmie chemicznej potrzeba zbudować laboratoria: lab organiczny i lab nieorganiczny. W tym celu tworzymy najpierw abstrakcyjną fabrykę, która następnie implementuje tworzenie już konretnej fabryki: LabFactory. Fabryka ta w zależności od typu laboratorium utworzy konkretny obiekt: OrganicLab i InorganicLab. Wykorzystując metodę fabrykująca w łatwy sposób utworzymy kolejne laboratoria, gdyby była taka potrzeba (np. lab fizyczny lub lab biologiczny).

Metoda fabrykująca

PRZED zastosowaniem wzorca

PO zastosowaniu wzorca

Wzorzec projektowy - DECORATOR

wzorzec strukturalny

Wzorzec ten służy do dynamicznego rozszerzania odpowiedzialności danej klasy. Składa się z czterech komponentów: z abstrakcyjnej klasy (Component), z konkretnej implementacji abstakcyjnej klasy, z abstrakcyjnej klasy wzbogacającej obiekt (Decorator) oraz z konkretnej implementacji klasy wzbogacającej.

PRZYKŁAD – W laboratorium potrzebujemy mieć różne chromatografy (specjalistyczne urządzenia do analizowania próbek). Każdy chromatograf składa się ze stałych elementów np. injector, kolumna, lampa UV, ale w zależności od typu możemy go udekorować w dodatkowe elementy np. SEC chromatograf może posiadać autosampler lub dodatkową lampę.  

PRZED zastosowaniem wzorca

PO zastosowaniu wzorca

Sandra
Chemik & Programista