OOP에서 개발할 때 때때로 인터페이스 / 계약은 변경할 수없는 라이브러리에 의해 제공됩니다. 이 인터페이스를 J라고합시다.
이제이 인터페이스를 구현하는 객체를 사용하는 클래스 A의 객체가 있습니다. 내부 인터페이스 정의의 작은 부분 만 필요합니다. 일부 객체 클래스는 프로젝트 중에 나에 의해 생성되므로 (D 유형 중 하나라고 부릅니다) 인터페이스 J 내부의 모든 구현에 오버 헤드가 있습니다.
인터페이스 J에서 기능의 하위 집합을 구현하려고하지만 지금까지 내 솔루션이 만족스럽지 않습니다.
- J의 모든 측면을 구현 한 다음 "notImplementedExceptions"를 발생 시키면 객체의 사용자에게 잘못된 정보를 제공합니다. 유형 D의 객체가 인터페이스 J를 준수하는 것처럼 보이지만 그렇지 않습니다. J) 객체의 무결성에 의존 할 수 없습니다.
- 인터페이스 J는 내 인터페이스와 완전히 호환되지만 새로 정의 된 인터페이스를 구현하면 인터페이스 J 만 구현하는 객체를 사용할 수 없습니다.
- 내 사용자 정의 객체가 인터페이스 J를 구현하게하면이 모든 기능이 필요하지 않기 때문에 상당한 오버 헤드가 발생합니다.
인터페이스 J를 변경할 수있을 때 인터페이스 J의 기능 중이 하위 집합을 가진 "슈퍼 인터페이스"K를 만들고 인터페이스 J를 인터페이스 K에서 상속하도록 만들었습니다. 그러나 인터페이스 J를 변경할 수는 없습니다.
이 문제에 대한 객체 지향 솔루션은 무엇입니까? 가장 좋은 솔루션은 여전히 "그냥"인터페이스 J를 구현하고 있습니까? 아니면 인터페이스를 변경하지 않고 인터페이스를 "슈퍼 클래스"하는 OOP 방식이 있습니까?