책임 연쇄 패턴

Uk·2024년 8월 17일
0

책임 연쇄 패턴

책임 연쇄 패턴은 디자인 패턴 중 하나로, 요청을 처리하는 객체들이 일련의 체인 형태로 연결된 구조를 가집니다.
각 객체는 자신이 처리할 수 있는 요청에 대해서 처리하고, 나머지 요청은 다음 객체로 넘기는 방식으로 동작합니다.
주로 단계 별 처리와 Validation 체크 및 Exception를 던질 때 주로 사용하게 됩니다.

장점

  1. 느슨한 결합
  2. 동적 처리 결정
  3. 책임 분산

책임 연쇄 패턴 요소

  • Handler (interface or abstact class)
    요청 처리 및 다음 핸들러를 연결을 정의하는 Interface
  • ConcreteHandler
    요청 처리에 대한 구현을 정의하는 Class
  • Client
    첫번째 핸들러 등록과 요청 체이닝
interface Handler {
    void handle(Request request);
    void setNext(SupportHandler nextHandler);
}

class ConcreteHandler implements Handler {
    private Handler next;

    public void setNext(Handler handler) {
        this.next = handler;
    }

    public void handle(Request request) {
        // logic
    }
}

public class Client {
    public static void main(String[] args) {
		String request = "request";
    
        Handler handler1 = new ConcreteHandler1();
        Handler handler2 = new ConcreteHandler2();
        Handler handler3 = new ConcreteHandler3();
        
        handler1.setNext(handler2);
        handler2.setNext(handler3);

        handler1.handleRequest(request);
    }
}

Spring에서 Servlet으로 전송이 되기 전 처리를 용이하게 해주는 Filter가 이러한 패턴을 사용하고 있습니다.

public interface Filter {

    void doFilter(ServletRequest var1, ServletResponse var2, FilterChain var3) throws IOException, ServletException;

}

0개의 댓글