【发布时间】:2011-10-28 22:47:13
【问题描述】:
这个问题的灵感来自我问过的previous question。
我编写的大部分代码都与 API 有关,从本质上讲,它必须易于扩展。我和我的团队其他成员为他如何处理插件而苦苦挣扎的一个常见问题,即可能扩展我们自己的接口并且在最终实现中的类应该感觉像是解决方案的原子部分。我特别考虑以下类型的用例(使用汽车类比)
界面:
Car
提供的实现:
Ford
Audi
第三方实施:
Toyota
我们通常要求CarDealer 类了解Car 的所有现有实现,而无需强制第三方在配置文件中显式声明Car。我一直在玩弄的一个想法是让Car 的实现向CarDealer 注册自己,但这会打开一个新的蠕虫罐,因为Toyota(或任何其他实现)在它们之前不会被初始化'重新明确引用,这是一个catch22。注释Car 的实现,然后遍历代码并使用相关注释初始化任何类也是一种方法,但我担心这可能会占用大量资源。
我认为我们不可能是第一个遇到这个问题的人,那么有什么已知的设计模式可以解决这个问题吗?
【问题讨论】: