Wzorce stały się jednym z podstawowych
narzędzi projektowania systemów. Ich ewolucję obserwuje się w różnych obszarach
rozwoju oprogramowania. Wyróżnia się wzorce na poziomach:
- architektonicznym – poziom integracji komponentów,
- projektowym – poziom interakcji między klasami,
- analitycznym – poziom opisu rzeczywistości,
- implementacyjnym – poziom języka programowania.
Wzorzec projektowy jest pojęciem wywodzącym się z inżynierii oprogramowania i oznacza koncepcję opisującą problem powtarzający się wielokrotnie w określonym kontekście, działające na niego siły, oraz istotę jego rozwiązania w sposób abstrakcyjny. Wzorzec jest gotowym schematem postępowania, który można zastosować w wielu sytuacjach. W tym celu może się łączyć również z innymi wzorcami.
Stosowanie wzorców projektowych rozwiązuje
specyficzne problemy projektowe sprawiając, że projekty zorientowane obiektowo
są bardziej elastyczne, eleganckie i mogą być ostatecznie ponownie wykorzystane
w przyszłości w ramach podobnych problemów. Dzięki wzorcom projektowym,
dokumentacja systemu jest bardziej czytelna i zrozumiała dla deweloperów.
Stosowanie wzorców na różnych poziomach wytwarzania oprogramowania pozwala
unikać powszechnych/typowych błędów.
Autorami pierwszej najbardziej znanej
publikacji dotyczącej wzorców projektowych byli E. Gamma, R. Helm, R. Johnson i
J. Vlissides (Gang of Four). Według nich „wzorzec
projektowy identyfikuje i opisuje pewną abstrakcję, której poziom znajduje się
powyżej poziomu abstrakcji pojedynczej klasy, instancji lub komponentu”.
W publikacji autorstwa Gang of Four
zaproponowano podział wzorców projektowych na trzy kategorie:
- kreacyjne - dotyczące sposobu tworzenia obiektów,
- strukturalne – opisujące sposób konstrukcji struktur obiektowych, powiązań między obiektami, zarządzanie nimi,
- behawioralne – opisujące algorytmy, podział odpowiedzialności między obiektami, charakterystykę interakcji między nimi.
Wzorzec projektowy identyfikuje uczestniczące w problemie klasy i obiekty, ich role, współpracę oraz podział odpowiedzialności. Każdy wzorzec skupia się na pojedynczym problemie projektowym. Opisuje głównie, kiedy może być stosowany, czy może być stosowany przy innych ograniczeniach projektowych, jakie są konsekwencje jego stosowania oraz powiązanie z innymi wzorcami.
Chociaż wzorce projektowe opisują
projektowanie zorientowanie obiektowo na poziomie abstrakcyjnym, opierają się
one na praktycznych rozwiązaniach, które są implementowane w wielu obiektowych
językach programowania (np. C++, Java, Ada) oraz w dynamicznych językach
obiektowych (np. CLOS, Dylan, Self).
Każdy wzorzec zawarty w katalogu wzorców
przedstawionym przez Gang of Four opisany jest za pomocą szablonu wzorca
projektowego. Szablon wzorca zawiera zestaw atrybutów, dzięki którym
charakterystyka wzorca przedstawiona jest w sposób jasny i usystematyzowany. Poniżej
przedstawione są wybrane atrybuty, które oddają najważniejsze cechy wzorców
projektowych:
- Nazwa – krótki opis wzorca, przedstawiający skojarzeniowo jego przeznaczenie;
- Klasyfikacja – kategoria, do której należy wzorzec;
- Cel – opisanie problemu dziedzinowego, w którym powinien być zastosowany wzorzec oraz ostateczny skutek jego rozwiązania;
- Zastosowanie – sytuacje, w których wzorzec jest stosowany;
- Struktura – graficzna reprezentacja uczestników (klas) wzorca i ich powiązań w postaci diagramu klas UML;
- Uczestnicy/Współdziałanie – nazwy ról klas, zakres ich odpowiedzialności oraz sposób współdziałania;
- Konsekwencje – efekty zastosowania wzorca, wady i zalety;
- Przykład – opis przykładu rzeczywistego, pozwalający lepiej zrozumieć charakterystykę, przeznaczenie i strukturę wzorca.
Brak komentarzy:
Prześlij komentarz