본문 바로가기

프로그래밍 강의 메모/코딩으로 학습하는 GoF의 디자인 패턴_백기선

행동 관련 디자인 패턴 > 책임 연쇄 패턴(Chain of Responsibility Pattern)

https://inf.run/6Shr

 

코딩으로 학습하는 GoF의 디자인 패턴 - 인프런 | 강의

디자인 패턴을 알고 있다면 스프링 뿐 아니라 여러 다양한 기술 및 프로그래밍 언어도 보다 쉽게 학습할 수 있습니다. 또한, 보다 유연하고 재사용성이 뛰어난 객체 지향 소프트웨어를 개발할

www.inflearn.com

 

 

책임 연쇄 패턴

  • 행동 관련 디자인 패턴.
  • 요청을 보내는 쪽과 요청을 처리하는 쪽을 분리하는 패턴.
  • 핸들러 체인을 사용하여 요청을 처리한다.

 

 

특정한 책임을 가진 클래스들이 연결되어있는 구조로 무언가를 처리하는 것.

요청을 보내는 쪽과 처리하는 쪽을 분리한다.

요청을 보내는 쪽에서 그 요청을 처리하는 핸들러가 어떤 구체적인 타입인지 상관없이,

디커플링된 상태에서 요청을 처리할 수 있게 만들어주는 패턴이다.

 

 

책임 연쇄 패턴이 해결하는 패턴을 적용하기 전 코드의 가장 큰 문제점.

클라이언트가 사용해야하는 핸들러를 직접 알아야한다면 복잡해진다.

 

 

 

 

Handler란 공통의 인터페이스가 존재하고,

이 인터페이스를 ConcreteHandler가 실체화하며,

이러한 ConcreteHandlerHandler 인터페이스를 체인으로 연결된 형태를 만들어준다.

 

Client가 구체적으로 어떤 Handler 타입으로 요청을 처리해야 하는지조차 모르게 만들어 주는 것이 이 패턴의 목적이다.

 

 

 



 

패턴 적용하기

중요한 점은 클라이언트가 본인이 어떤 핸들러를 써야하는지 결정하지 않는다는 것이다.

구체적인 핸들러 타입으로부터 요청을 처리하는 쪽과 요청을 보내는 클라이언트가 decoupled되어 있다.

 

구체적인 핸들러는 체인을 만들어주는 쪽에서 결정이 된다.

 

요청, 응답을 처리할 때 많이 사용되는 패턴이다.

 

 

책임 연쇄 패턴의 장점과 단점

장점

1. 클라이언트 코드를 변경하지 않고 새로운 핸들러를 체인에 추가할 수 있다.

Open-Closed Principle(OCP) 만족.

2. 각각의 체인은 자신이 해야하는 일만 한다.

single-responsibility principle(SRP) 만족.

 

단점

디버깅이 조금 어렵다.

숙련이 안되면 특정 핸들러를 찾기 어려울 수도 있다.

 

 

 

 

 

 

https://refactoring.guru/ko/design-patterns/chain-of-responsibility

 

Chain of Responsibility

/ Design Patterns / Behavioral Patterns Chain of Responsibility Also known as: CoR, Chain of Command Intent Chain of Responsibility is a behavioral design pattern that lets you pass requests along a chain of handlers. Upon receiving a request, each handle

refactoring.guru