wtorek, 12 lutego 2013

Wzorce projektowe

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