Chain of Responsibility란?
어떠한 요청이 들어왔을 때 요청을 받은 객체가 해당 요청을 처리할 수 없을 경우 연결된 다음 객체에 전달하고 해당 요청을 해결할 수 있는 객체가 처리하는 방식으로 요청을 처리할 수 있는 객체가 명시적이지 않을 때 사용할 수 있는 패턴이다.
장점
- 작업을 수행하는 객체에서 작업을 호출하는 객체를 쉽게 분리할 수 있다.
- 사슬에 들어가는 객체를 바꾸거나 순서를 바꿈으로써 상황에 따라 동적으로 핸들러를 추가하거나 제거할 수 있으며 전체 구조를 손상시키지 않고 새로운 객체를 도입할 수 있다.
단점
- 요청이 반드시 수행된다는 보장이 없다. 체인이 적절하게 구성되어 있지 않다면 사슬의 끝을 만날때까지 처리되지 않을 수도 있다.
- 요청을 처리하는데 걸리는 시간을 정확히 예측하기가 힘들다.
- 과정을 탐색하거나 디버깅하기가 힘들 수 있다.
|참고
https://www.nextree.co.kr/p2533/
https://blog.naver.com/pmw9440/222750365968