개발/Java

디자인 패턴 - Decorator, Adapter, Facade 패턴

haloper 2016. 4. 4. 13:56

Decorator, Adapter, Facade 패턴은 서로 비슷한 점을 가진 디자인 패턴입니다.

세 패턴 모두 새로운 클래스로 기존의 클래스를 감싸는 방식이라는 공통점이 있습니다.

기존 코드를 감싸는 방식은 상속이 아닌 구성(프로퍼티로 기존의 클래스의 인스턴스를 가지고 있음)을 사용합니다.


서로 비슷한 이 패턴들의 차이점을 정리해 보도록 하겠습니다.


- Decorator 패턴

기존 클래스를 감싸지만, 인터페이스는 그대로 유지하면서 새로운 기능을 추가하는 방식입니다.

http://haloper.tistory.com/11


- Adapter 패턴

기존 클래스의 인터페이스를 새로운 인터페이스로 변경할 때 사용합니다.

기존의 개발된 클래스를 다른 인터페이스를 사용하는 클라이언트에서 사용 가능하도록

중간에서 인터페이스를 변환해 주는 것이 주 목적입니다.

어뎁터 클래스는 내부에 기존 클래스를 가지고 있고,

새로 적용하고자 하는 인터페이스의 각 메소드 호출 시 마다

기존 인터페이스의 매핑되는 메소드를 호출해 주는 방식입니다.


- Facade 패턴

Adapter 패턴이 기존의 인터페이스를 새로운 인터페이스로 1:1 변환 시켜주는 패턴이였다면,

Facade 패턴은 하나의 복잡한 시스템(여러 클래스들로 구성된 로직)을

사용자에게 필요한 간소화된 인터페이스로 감싸주는 방식입니다.

사용자는 기존 시스템의 복잡한 클래스 관계를 알 필요 없이,

Facade 클래스가 제공해 주는 인터페이스만 사용하여 쉽게 시스템을 사용할 수 있습니다.