1. 구체 클래스 기반의 프록시:

장점:

  • 직접적인 확장: 특정 클래스의 일부 기능만을 확장하거나 변경할 때 매우 직관적이다.
  • 간단성: 특정 메서드만 오버라이드하여 필요한 기능을 추가할 수 있다.

단점:

  • 상속 제약: final 클래스와, final 메서드는 상속받을 수 없다.
  • 생성자 문제: 부모 클래스의 특정 생성자가 필요할 경우, 프록시에서도 그 생성자를 호출해야 한다. 때로는 필요하지 않은 정보나 null을 전달해야 할 수도 있다.

2. 인터페이스 기반의 프록시:

장점:

  • 유연성: 하나의 프록시 클래스가 여러 실제 객체를 대상으로 할 수 있다.
  • 변경에 강함: 실제 객체의 구현이 변경되더라도, 인터페이스만 동일하다면 프록시 클래스를 수정할 필요가 없다.

단점:

  • 인터페이스 구현의 제약: 인터페이스에 정의된 모든 메서드를 프록시에서 구현해야 한다.
  • 중복 코드 문제: 여러 프록시에서 비슷한 기능(예: 로깅, 보안 검사 등)을 구현할 경우 코드 중복이 발생할 수 있다.

'Java > 스프링 AOP' 카테고리의 다른 글

jdk 동적 프록시  (0) 2023.08.18
리플렉션  (0) 2023.08.16
서브쿼리, JOIN, 프로시저  (0) 2023.08.08
프록시 패턴과 데코레이션 패턴 : 종업원과 샌드위치  (0) 2023.08.08
데코레이션 패턴  (0) 2023.08.07

+ Recent posts