6.3 다이내믹 프록시와 팩토리 빈
6.3.1 프록시와 프록시 패턴, 데코레이터 패턴

- 부가기능 외의 나머지 모든 기능은 원래 핵심기능을 가진 클래스로 위임해줘야 한다. 핵심기능은 부가기능 클래스의 존재를 모르며, 부가기능이 핵심기능을 사용하는 구조가 된다.
- 클라이언트가 핵심기능을 가진 클래스를 직접 사용해버리면 부가기능이 적용될 기회가 없다는 문제가 존재한다.

- 부가기능은 자신이 핵심기능을 가진 클래스처럼 꾸며서, 클라이언트가 자신을 거쳐 핵심기능을 사용하도록 만든다.
- 클라이언트는 인터페이스를 통해서만 핵심기능을 사용하게 하고, 부가기능도 같은 인터페이스를 구현한 뒤에 자신이 그 사이에 끼어들어야 한다.
프록시

자신이 클라이언트가 사용하려고 하는 실제 대상인 것처럼 위장해서 클라이언트의 요청을 받아주는 것을 대리자, 대리인과 같은 역할을 한다고 해서 프록시
라고 부른다. 프록시를 통해 최종적으로 요청을 위임받아 처리하는 실제 오브젝트를 타깃
또는 실체
라고 부른다.
데코레이터 패턴
타깃에 부가적인 기능을 런타임 시 다이내믹하게 부여해주기 위해 프록시를 사용하는 패턴 (2에 해당)