
클래스 다이어그램만 보자면 비슷하게 생긴 세가지 비슷한 형태의 패턴을 비교해보고자 한다. 셋은 각각 역할이 다르다는 점에 주목하자.
대리자 역할
A -> B
A -> Proxy -> B
Proxy 는 B 와 인터페이스가 같다.
Proxy 는 B 를 감싼다고도 할 수 있다.
A 에서 B 로의 접근을 제어하거나 B 를 보호하는 역할을 한다고 생각하면 자연스럽다.
행위를 추가, 확장하는 역할
A -> B
A -> Decorator(B)
Decorator 는 B 와 인터페이스가 같다
Decorator 는 B 를 감싼다.
B 의 기능을 확장시키는 형태라고 생각하면 되겠다.
컨버터 역할
A -> B
A -> Adapter(B')
Adapter 는 B 와 인터페이스가 같다.
Adapter 는 B' 을 감싼다.
A 가 B 를 사용하는 인터페이스를 그대로 쓰면서 B' 을 사용할 수 있게 호환시켜준다.