인터페이스 기반 프록시
장점
* 원본 코드 수정 없이 기능 추가 가능
* 구조 깔끔함
단점
* 너무 많은 프록시 클래스 생성됨
* 인터페이스 없는 클래스에 적용 불가
* 캐스팅 관련 단점 있음 (나중에 수업 예정)
구체클래스 기반 프록시
장점
* 원본 코드 수정 없이 기능 추가 가능
* 인터페이스 없이도 구현 가능
단점
* 너무 많은 프록시 클래스가 생성됨
* 클래스와 메서드에 final 키워드가 붙은 경우 오버라이드 불가능
결론:
원본코드 수정 없이 기능 추가했지만, 대상 클래스만 다르고 로직은 같은데도 여러 프록시 클래스를 만들어 로직을 복붙했음
동적프록시로 이 단점 해결할 것