ta_chan
2023. 8. 15. 16:49
2023. 8. 15. 16:49
1. 구체 클래스 기반의 프록시:
장점:
- 직접적인 확장: 특정 클래스의 일부 기능만을 확장하거나 변경할 때 매우 직관적이다.
- 간단성: 특정 메서드만 오버라이드하여 필요한 기능을 추가할 수 있다.
단점:
- 상속 제약: final 클래스와, final 메서드는 상속받을 수 없다.
- 생성자 문제: 부모 클래스의 특정 생성자가 필요할 경우, 프록시에서도 그 생성자를 호출해야 한다. 때로는 필요하지 않은 정보나 null을 전달해야 할 수도 있다.
2. 인터페이스 기반의 프록시:
장점:
- 유연성: 하나의 프록시 클래스가 여러 실제 객체를 대상으로 할 수 있다.
- 변경에 강함: 실제 객체의 구현이 변경되더라도, 인터페이스만 동일하다면 프록시 클래스를 수정할 필요가 없다.
단점:
- 인터페이스 구현의 제약: 인터페이스에 정의된 모든 메서드를 프록시에서 구현해야 한다.
- 중복 코드 문제: 여러 프록시에서 비슷한 기능(예: 로깅, 보안 검사 등)을 구현할 경우 코드 중복이 발생할 수 있다.