我有以下界面插件:插件接口的初始化方法是否有代碼異味?
public interface IPlugin
{
IInitializedPlugin Initialize(PluginInitialization pluginInitialization);
}
應用程序可以獲得IPlugin
實例(在這種情況下,IOC容器),但得到IInitializedPlugin
比如,它必須調用Initialize
方法。 PluginInitialization
是一個簡單的插件配置結構。然後IInitializedPlugin
具有實際的插件功能。這個設計如何改進?
這與Java無關。 –
你可以稍微改變一下設計(實際上,它不會像_renames_類型那樣更改設計),因此消費者提供了一個產生IPlugin的IPluginFactory。工廠有一個'Create'方法,它需要一個'IPluginConfiguration'對象並返回一個實例化/初始化的'IPlugin'對象。 –
@ChrisSinclair - IPluginFactory,Create和IPlugin當然是更好的名字,謝謝。 – Pol