Purpose:
Gdy potrzebujemy by request mógł być obsłużony przez kilku odbiorców(handler). Odbiorcy są połączeniu ze sobą i przekazują wzajemnie między sobą wynik obsłużenia.
Use:
- wiele obiektów może obsłużyć żądanie, nie jest zdeterminowane jaki obiekt będzie wstanie obsłużyć żądanie,
- kilka obiektów może obsłużyć żądanie, obiekty obsługujące są determinowane w czasie wykonania (runtime),
- jest do przyjęcia to, iż żądanie nie zostanie obsłużone przez żaden obiekt.
Not Use:
- każde żądanie obsługiwane jest tylko przez jedne obiekt,
- gdy klient wie jaki serwis obsługuje jakie żądanie.
Example
Wzorzec ten realizowany jest przez obsługę wyjątków w niektórych językach. Gdy pojawia się wyjątek w metodzie, najpierw sprawdzane jest czy dana metoda posiada mechanizm obsługi, o ile dana metoda nie posiada mechanizmu obsługi wyjątek przekazywany jest do kolejnej metody na stosie. Przekazywanie kontynuowane jest do momentu napotkania metody potrafiącej obsłużyć wyjątek lub do skończenia się wywołań na stosie.
Resource:
- java.dzone.com/articles/design-patterns-uncovered-chain-of-responsibility
- en.wikipedia.org/wiki/Chain-of-responsibility_pattern
- javaworld.com/javaworld/jw-08-2003/jw-0829-designpatterns.html
- aragorn.pb.bialystok.pl/~tabedzki/dp/Chain_of_Responsibility.html
- c2.com/cgi/wiki?ChainOfResponsibilityPattern