2016년 4월 1일 금요일

Design Pattern Digest - 14. Chain of Responsibility

이글은 책 "Java언어로 배우는 디자인 패턴 입문"을 읽고 쓴 요약입니다. 
나만 이해하도록 불친절하게 작성되어 있습니다. 
자세한 내용은 책을 보세요. 


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의 클래스를 만든다.)


댓글 없음:

댓글 쓰기