객체지향 및 기반 언어/디자인 패턴

[Design Pattern] Chapter 14 기타 패턴

박지환 2022. 11. 6. 11:49

브리지 패턴

구현과 더불어 추상화 부분까지 변경해야 한다면 브리지(Bridge) 패턴을 쓰면 된다.

브리지 패턴을 사용하면 추상화된 부분과 구현 부분을 서로 다른 클래스 계층구조로 분리해서 그 둘을 모두 변경할 수 있다.

빌더 패턴

제품을 여러 단계로 나눠서 만들도록 제품 생산 단계를 캡슐화하고 싶다면 빌더(Builder) 패턴을 사용하면 된다.

빌더 패턴을 사용하면 여러 단계와 다양한 절차를 거쳐 객체를 만들 수 있다.

책임 연쇄 패턴

1개의 요청을 2개 이상의 객체에서 처리해야 한다면 책임 연쇄(Chain of Responsibility) 패턴을 사용하면 된다.

책임 연쇄 패턴을 사용하면 객체 사슬을 통해, 자기가 받은 요청을 검사해서 직접 처리하거나 사슬에 들어있는 다른 객체에게 넘겨 요청을 보낸 쪽과 받는 쪽을 분리할 수 있다.

플라이웨이트 패턴

어떤 클래스의 인스턴스 하나로 여러 개의 ‘가상 인스턴스’를 제공하고 싶다면 플라이웨이트(Flyweight) 패턴을 사용하면 된다.

플라이웨이트 패턴을 사용하면 인스턴스는 하나만 만들고, 상태는 클라이언트 객체가 관리하여 동일한 인스턴스의 생성으로 인한 오버헤드를 막을 수 있다.

인터프리터 패턴

어떤 언어의 인터프리터를 만들 때는 인터프리터(Interpreter) 패턴을 사용하면 된다.

인터프리터 패턴을 사용하면 문법과 구문을 번역하는 인터프리터 클래스를 기반으로 간단한 언어를 정의할 수 있다.

중재자 패턴

서로 관련된 객체 사이의 복잡한 통신과 제어를 한곳으로 집중하고 싶다면 중재자(Mediator)패턴을 사용하면 된다.

중재자 패턴을 사용하면 로직이 존재하는 시스템과, 시스템에 들어있는 객체들을 분리할 수 있다.

메멘토 패턴

객체를 이전의 상태로 복구해야 한다면 메멘토(Memento) 패턴을 쓰면 된다.

메멘토 패턴을 사용하면 저장된 상태를 핵심 객체와는 다른 별도의 객체에 보관할 수 있다.

프로토타입 패턴

어떤 클래스의 인스턴스를 만들 때 자원과 시간이 많이 들거나 복잡하다면 프로토타입(Prototype) 패턴을 쓰면 된다.

프로토타입 패턴을 사용하면 기존 인스턴스를 복사하기만 해도 새로운 인스턴스를 만들 수 있다.

비지터 패턴

다양한 객체에 새로운 기능을 추가해야 하는데 캡슐화가 별로 중요하지 않다면 비지터(Visitor) 패턴을 쓰면 된다.