Jest to pierwsza z pięciu książek cyklu poświęconego wzorcom proektowym. Dowiedziałem się o nich słuchając devtalk trio (podcast prowadzony przez Macieja Aniserowicza,  Andrzeja Krzywdę i Sławomira Sobótkę ). Interesuje się architekturą oprogramowania, dlatego postanowiłem sięgnąć po tą pozycję.

ZAWARTOŚĆ

W książce zostały opisane następujące wzorce:

  • Layers
  • Pipes and Filters
  • Blackboard
  • Broker
  • Model-View-Controller (MVC)
  • Presentation-Abstraction-Control (PAC)
  • Microkernel
  • Reflection
  • Whole-Part
  • Master-Slave
  • Proxy
  • View Handler
  • Forwarder-Receiver
  • Client-Dispatcher-Server
  • Publisher-Subscriber

Przypadła mi do gustu struktura opisu wzorca projektowego wyglądająca w następujący sposób:

NAME

Nazwa wzorca i krótki opis.

ALSO KNOWN AS

Inne nazwy wzorca

EXAMPLE

Przykład ilustrujący istnienie problemu i potrzebę wzorca.

CONTEXT

Opis sytuacji w której wzorzec może mieć zastosowanie

PROBLEM

Opis problemu, którego dotyczy wzorzec projektowy.

SOLUTION

Opis rozwiązania problemu

STRUCTURE

Przedstawienie struktury wzorca projektowego za pomocą kart CRC(Class-responsibility-collaboration card) oraz diagramów OMT

DYNAMICS

Scenariusze opisujące zachowania w czasie wykonywania wzorca za pomocą diagramów sekwencji (Object Message Sequence Charts)

IMPLEMENTATION

Porady jak zaimplementować wzorzec na czym się skupić.

EXAMPLE RESOLVED

Dyskusja o ważnych aspektach rozwiązania problemu, które nie zostały poruszone w poprzednich sekcjach.

VARIANTS

Opis wariantów danego wzorca

KNOWN USES

Przykłady istniejących systemów w których zastosowano dany wzorzec projektowy

CONSEQUENCES

Opis zalet oraz zobowiązań z zastosowania wzorca.

SEE ALSO

Odwołania do wzorców, które rozwiązują podobny problem.

Książka opisuje czym jest wzorzec projektowy. Odpowiada na pytanie co czyni rozwiązanie problemu wzorcem. Dzieli je na kategorie, przedstawia relacje między nimi, które tworzą cały system wzorców projektowych. Autorzy prezentują, także tabele klasyfikacji wzorców.

PODSUMOWANIE

Nie spotkałem się do tej pory z lepiej opisanym wzorcem warstw (layers). Co ciekawe Eric Evans odwołuje się do tej książki w rozdziale poświęconym architekturze systemu w swojej już legendarnej publikacji Domain-Driven Design: Tackling Complexity in the Heart of Software.

Większość z programistów słysząc MVC, kojarzy ten wzorzec z frameworkiem ASP.NET MVC, w tej książce jest opisana jego pierwotna wersja. Jest to interesujący aspekt historyczny, przedstawiający jak ten wzorzec wyglądał dawniej a jak jest dzisiaj rozumiany. Autorzy zachęcają do użycia wraz z MVC wzorca Command Processor, oraz dodanie mechanizmu change-propagation poprzez wzorzec Publisher-Subscriber. Widać w tym podłoże dla wzorców MVVM oraz MVP.

Bardzo interesujący okazał się rozdział pod tytułem Adaptable Systems opisujący wzorce dla systemów, które potrafią się dostosować do zmian Microkernel (jądro systemu) oraz Reflection (implementacja systemu oparta jest o meta level).

DLA KOGO JEST TA KSIĄŻKA?

Książka jest przeznaczona przede wszystkim dla osób interesujących się architekturą oprogramowania i mających już trochę wiedzy na ten temat. Pozycja ta ma aspekt teoretyczny, autorzy nie skupiają się na implementacji wzorców przez co nie ma w niej dużo kodu źródłowego. Dzięki takiemu zabiegowi nie jest zależna od konkretnego języka programowania oraz technologii co czyni ją bardziej odporną na upływ czasu. Książka przypadła mi do gustu, przez co na pewno sięgnę po drugi tom.

Zapraszam na inne recenzje: pisz-kod.pl/recenzje/

Informacje podstawowe:

Autorzy: Michael Stal, Peter Sommerlad, Hans Rohnert, Regine Meunier, Frank Buschmann

Ilość stron: 476

Rok wydania: 1996

Źródło okładki: http://media.wiley.com/product_data/coverImage300/97/04719586/0471958697.jpg