【发布时间】:2013-06-22 15:09:54
【问题描述】:
我有以下插件接口:
public interface IPlugin
{
IInitializedPlugin Initialize(PluginInitialization pluginInitialization);
}
应用程序可以获取IPlugin 实例(在这种情况下从IOC 容器),但要获取IInitializedPlugin 实例,它必须调用Initialize 方法。 PluginInitialization 结构简单,带有插件配置。然后IInitializedPlugin 具有实际的插件功能。如何改进这种设计?
【问题讨论】:
-
这与Java无关。
-
你可以稍微改变设计(实际上,它并没有改变设计,而是重命名类型),所以消费者提供了一个
IPluginFactory生成IPlugin。工厂有一个Create方法,它需要一个IPluginConfiguration对象并返回一个实例化/初始化的IPlugin对象。 -
@ChrisSinclair - IPluginFactory、Create 和 IPlugin 是更好的名字,谢谢。
标签: c# design-patterns plugins inversion-of-control