在OOP中进行开发时,有时接口/协定是由您不能更改的库提供的。我们将此接口称为J。
现在,您有了一个类A的对象,该对象使用实现此接口的对象。内部仅需要接口定义的一小部分。我在项目期间创建了一些对象类(让我们称其中一个类型为D),因此在接口J内实现所有操作都会产生开销。
我想在接口J中实现功能的一个子集,但是到目前为止,我的解决方案并不令我满意:
- 实现J的各个方面,然后抛出“ notImplementedExceptions”会误告知用户我的对象:看来我类型D的对象确实符合接口J,但它们与我的对象的其他使用者(接受实现接口的对象) J)不能依靠我对象的完整性。
- 尽管接口J与我自己的接口完全兼容,但是实现新定义的接口会禁止我使用仅实现接口J的对象。
- 让我的自定义对象实现接口J会产生很大的开销,因为它们不需要所有这些功能。
当我能够更改接口J时,我将创建一个具有接口J功能子集的“超级接口” K,并使接口J从接口K继承。但是我不能更改接口J。
什么是此问题的面向对象的解决方案?最好的解决方案是否仍在实现“ Just”接口J?还是有OOP方式可以在不更改接口的情况下“超类化”接口?