구체적인 구현 코드는 제거했을지라도 위임을 통해 기능을 사용하는 코드는 핵심 코드와 함께 남아있다.

부가 기능을 담은 클래스의 특징

image.png

  1. 부가기능 외 나머지 모든 기능은 원래 핵심 기능을 가진 클래스로 위임해줘야 한다.
  2. 핵심기능은 부가기능을 가진 클래스의 존재를 모른다.
  3. 따라서, 부가기능이 핵심기능을 사용하는 구조가 되는 것

문제는 이렇게 구성해도 클라이언트가 핵심 기능을 가진 클래스를 직접 사용하면 부가기능이 적용될 기회가 없다.

⇒ 부가기능은 자신이 핵심 기능을 가진 것처럼 꾸며서 클라이언트가 자신을 거쳐 핵심 기능을 사용하게 하자.

그러기 위해

image.png

부가기능 코드

프록시, proxy