2-1. 인터페이스 기반 프록시 vs 클래스 기반 프록시

  • 인터페이스가 없어도 클래스 기반으로도 프록시 생성 가능

  • 클래스 기반 프록시는 해당 클래스에만 적용 가능. 인터페이스 기반 프록시는 인터페이스만 같으면 모든 곳에 적용 가능.

  • 클래스 기반 프록시는 상속을 사용. → 제약이 있음

    • 부모 클래스의 생성자를 호출해야 함

    • 클래스에 final 키워드가 붙으면 상속이 불가능

    • 메서드에 final 키워드가 붙으면 해당 메서드를 오버라이딩 불가.


  • 인터페이스 기반의 프록시는 상속이라는 제약에서 자유로움

  • 또한 역할과 구현을 나누기에도 좋음. 다만 구현을 거의 변경할 일이 없는 클래스들도 있을텐데 이럴때 구체 클래스를 바로 사용할 수도 있음.


Last updated