나만 이해하도록 불친절하게 작성되어 있습니다.
자세한 내용은 책을 보세요.
Chain of Responsibility
- 이슈가 발생했을 때 이를 처리하는 Handler들은 자기가 처리할 수 있는 이슈에 대해서만 집중할 수 있다.
- 이때 Handler들 사이에 이슈를 전달하는 방식은 중앙이 아니라 각자가 하는데, successor를 통해 다음 Handler를 사슬처럼 엮는 구조이다.
- 이슈 발생시 Handler들이 차례로 호출되어 처리하고 처리할 수 없으면 다음으로 넘긴다. successor가 없는 마지막 Handler는 최종 error 처리를 하면된다.
- Handler가 resolve()를 false반환하였을 때 next로 iteration시키는 역할을 상위 abstract class가 구현할 수 있다. (그림에서 Handler는 interface지만) 그러면 Client는 사슬의 첫번째 Handler만 가지고 있으면 된다. (아니면 Handler사슬을 가지고 있으면서 iteration시켜주는 제 3의 클래스를 만든다.)
댓글 없음:
댓글 쓰기