Api 是否有理由使用抽象类而不是接口来参数化?
我目前正在开发一个基于组件的API,它非常有状态。顶级组件实现了大约12个接口 因此,库存顶级组件位于抽象实现堆栈的顶部,抽象实现堆栈依次包含多个mixin实现和多个mixin接口 到目前为止,一切都很好(我希望如此) 问题是基本功能的实现非常复杂(5层基类中有1000行),因此我不希望组件编写器自己实现接口,而是扩展我的基类(所有锅炉板代码都已编写) 如果API因此接受接口,而不是我希望组件编写者扩展的抽象实现的引用,那么我就有一个风险,即实现者将不会执行其他代码领域所要求和假设的验证 因此,我的问题是,有时使用抽象实现引用而不是对其实现的接口的引用来参数化API方法是否有效 您是否有一个设计良好的API使用这种技术的例子,或者我是在试图说服自己进行不好的实践 到目前为止,一切都很好(我希望如此) 不完全是。实现十几个接口不是一个好迹象。但我不知道如何重构,或者说是可能的,因为我不知道代码 因此,我的问题是,有时使用抽象实现引用而不是对其实现的接口的引用来参数化API方法是否有效 很少,是的。例如(Java):Api 是否有理由使用抽象类而不是接口来参数化?,api,oop,interface,anti-patterns,Api,Oop,Interface,Anti Patterns,我目前正在开发一个基于组件的API,它非常有状态。顶级组件实现了大约12个接口 因此,库存顶级组件位于抽象实现堆栈的顶部,抽象实现堆栈依次包含多个mixin实现和多个mixin接口 到目前为止,一切都很好(我希望如此) 问题是基本功能的实现非常复杂(5层基类中有1000行),因此我不希望组件编写器自己实现接口,而是扩展我的基类(所有锅炉板代码都已编写) 如果API因此接受接口,而不是我希望组件编写者扩展的抽象实现的引用,那么我就有一个风险,即实现者将不会执行其他代码领域所要求和假设的验证 因此,
- JSF:
是抽象的,但作为参数传递javax.faces.context.FacesContext
- EL:
-同上javax.EL.ELContext
- AWT:
-同上java.AWT.Image
最后,如果您完全确定无法重新构造接口,则可以使用尽可能少的抽象类参数。以防万一-有问题的语言是什么?在这个特定的用例中,动态代理将如何帮助您?我看不出如何帮助。但我错过了整个画面。