Builder 패턴 Chain of Responsibility 패턴
chain of responsibility 패턴
책임들이 연결되어 있어
내가 책임을 못 질 것 같으면 다음 책임자에게 자동으로 넘어가는 구조를 말한다.
이런 구조가 필요한 이유를 먼저 살펴보자.
예를 들어, 학생이 학교의 한 부서(학생처)에 상담 전화를 걸었다고 생각해보자.
전화를 받은 사람이 해당 문제는 담당자가 다르다고
실제 담당자의 전화번호만 가르쳐준다면 전화를 건 학생은
일단 전화를 끊고 알려준 번호로 다시 전화를 걸어야 한다.
그런데 알려준 번호로 전화를했는데 이번에도 담당자가 바뀌었다며
다른 전화번호를 알려준다면 학생은 담당자와 연결될 때까지
세 번이나 전화를 걸어야 하므로 매우 불편하고 짜증이 날 것이다.
이와 달리 처음 전화를 걸었을 때 받은 사람이 담당자가 아닐 경우
전화를 끊지 않고도 담당자에게 돌려주면 매우 편리할 것이다.
소프트웨어 개발에서도 이렇게 자동으로 연결되는 구조로 프로그램을 만들면
매우 유용한데 이 개념을 적용할 수 있는 것이 바로 chain of responsibility 패턴이다.
학생이 전화했을 때 번호를 가르쳐주고 직접 해보라는 것은
프로그램의 특정 기능에 대한 처리가 개별적으로 하드 코딩되어 있어
연결 변경이 불가능한 구조이다.
이는 유연성이 매우 떨어진다.
반면, 학생이 전화를 했을 때 알아서 연결해주는 형태는
프로그램이 필요에 따라 동적으로 처리할 수 있는 구조이다.
이 구조는 [그림 5-51]처럼 추상 클래스를 활용하여 설계하고,
이런 구조를 chain of responsibility 패턴이라고 한다.
builder 패턴
복잡한 것을 만들 때는 전체를 한꺼번에 만들기보다는
작게 분리하여 만든 후 다시 합치는 것이 편리하다.
builder 패턴은 복잡한 인스턴스를 조립하여 만드는 구조로,
복합 객체를 생성할 때 객체를 생성하는 방법(과정)과 객체를 구현(표현)하는 방법을 분리한다.
따라서 이 패턴은 동일한 생성 절차에서 서로 다른 표현 결과를 만들 수 있다.
[그림 5-32]와 같이 구체적인 여러 개의 concreteBuilder들을 추상화하여
builder 추상 클래스를 만들고, 추상 클래스는 구체 클래스의 메서드를 결정한다.
director 클래스는 construct 메서드를 하나 가지고 있고,
그 메서드를 사용해서 어떤 구체 클래스가 선택되는지 결정한다.
'개발 관련 정보 > 디자인패턴' 카테고리의 다른 글
13. Strategy 패턴 (0) | 2023.04.11 |
---|---|
iterator 패턴 (0) | 2023.04.06 |
10.composite 패턴 (0) | 2023.04.03 |
9.observer 패턴 (0) | 2023.03.29 |
8.Command 패턴과 Mediator 패턴 (0) | 2023.03.28 |
댓글