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 |