[디자인 패턴] Chain of Responisibility

2019. 1. 25. 00:24cs/디자인 패턴

Chain of Responsibility 


일명 한국어로 책임 떠넘기


일상생활에서 가끔 이랬던적이 있다. 나도 갤럭시 노트8 올림픽 에디션을 공짜로 받은 후 바로 사용하려고 했는데 락이라는 것이 걸려있었다. 

그래서 처음에 kt에 갔다가 거절당하고 samsung으로 갔다가 kt가라고 해서 kt가고 서로 떠넘겼다. 나중에는 여러번 반복 후 kt 플라자가서 사용할 수 있게 되었다. 이런 것과 비슷한 역활을 하는 패턴인 것 같다.


공부하기전 상상을 해보면 특정 요청을 수행하는 곳을 찾아서 찾아서 맞는 곳에 도착했을 때 기능을 수행하는 약간 그런 식으로 상상이 된다. 


책을 쭉 읽어 보니 비슷한 것 같습니다. 


더 자세히 읽어 보면 다수의 오브젝트를 체인 처럼 연결할 후 그 오브젝트의 사슬을 차례로 돌아다니면서 목적한 오브젝트를 결정하는 방법입니다. 


장점


1. 요청하는 쪽과 처리하는 쪽의 연결을 유연하게 하여 오브젝트를 부품으로 독립시킬 수 있습니다. 

2. 요청 상황에 맞추어 오브젝트가 변해야 하는 상황에 맞추어 대응할 수 있습니다.


하지만 단점도 있습니다.


단점 


모든 객체를 한번씩 거쳐가면서 확인을 해야한다는 문제가 있습니다. 그럼 당연히 퍼포먼스 부분에서 문제가 있을 것입니다. 그래서 특별히 퍼포먼스에 신경을 쓸 프로그램이라면 사용해서는 안됩니다.


예제 프로그램으로는 특정한 트러블이 발생하면 트러블의 상황에 맞게 처리하게 만들어보겠습니다.