디자인 패턴/행위 패턴

Chain of responsibility 패턴

언린이 2021. 10. 29. 10:01

Chain of responsibility 패턴은 명령 객체와 일련의 처리 객체들을 포함하는 디자인 패턴입니다. 각각의 처리 객체는 명령 객체를 처리할 수 있는 연산의 집합이고, 체인 안의 처리 객체가 핸들할 수 없는 명령은 다음 처리 객체로 넘겨집니다.

 

 

구조

  • Handler
    • 요청을 처리하기 위한 수신자들이 가져야 할 인터페이스를 정의합니다.
  • ConcreteHandler
    • Handler 인터페이스를 구현하며, 각자가 요청 종류에 따라 자신이 처리할 수 있는 부분을 구현합니다.
  • Client
    • 수신자에게 처리를 요구합니다.

 

 

활용 상황

  • 요청의 발신자와 수신자를 분리해야 할때 유용합니다.
  • 요청을 처리할 수 있는 객체가 여러개이고 그 중 하나에 요청을 보내고 싶을때 유용합니다.
  • 코드에서 처리 객체를 명시적으로 지정하고 싶지 않을때 유용합니다.

 

 

Chain of responsibility 패턴의 장단점

  • 장점
    • 결합도를 낮추며 요청의 발신자와 수신자를 분리시킬 수 있습니다.
    • 클라이언트가 처리 객체의 집합 내부의 구조를 알 필요가 없습니다.
    • 집합 내의 처리 순서를 변경하거나 처리 객체를 추가 또는 삭제할 수 있어 유연성이 향상됩니다.
    • 새로운 요청에 대한 처리 객체 생성이 매우 편리해집니다.
  • 단점
    • 집합 내부에서 사이클이 발생할 수 있습니다.
    • 디버깅 및 테스트가 쉽지 않습니다.

'디자인 패턴 > 행위 패턴' 카테고리의 다른 글

Strategy 패턴  (0) 2021.11.05
Interpreter 패턴  (0) 2021.11.02
Iterator 패턴  (0) 2021.10.26
Visitor 패턴  (0) 2021.10.23
Observer 패턴  (0) 2021.10.19