不止一次,我发现自己在使用一个封闭的类(我无法修改它),我希望实现一个适合我需要的窄接口。我的客户端代码应该拥有该接口,但我不知道有任何机制可以宣布这个封闭类是我的缩小接口的实现。
我试图让这个类被传递(依赖注入)到我的代码(组合)中,但也允许其他任何可以支持窄接口的东西。在其他语言中,鸭子打字使这变得微不足道。虽然我在java中,所以我希望必须编写一个完整的其他类来包装封闭类以实现这一点。有没有我想念的方法?
谢谢
编辑以解决欺骗:
接口隔离原则没有提到封闭类问题,这是这个问题的重点。请重新考虑标记为这个特定问题的欺骗。
这个问题: Interface Segregation Principle-Program to an interface,有一个很好的接口隔离原则示例:
class A {
method1()
method2()
// more methods
method10()
}
class B {
A a = new A()
}
会变成
interface C {
method1()
method2()
}
class A implements C{
method1()
method2()
// more methods
method10()
}
class B {
C c = new A()
}
但请注意它如何需要对 A 类进行更改。如果 A 对修改关闭,我如何干净地完成同样的事情?