假设我有多个类都具有相同的操作(在我的情况下,我创建了一个插件框架,所有:Load,Run,Dispose),我想使用一个接口,所以我可以创建一个PluginFactory处理初始化。问题是他们都需要截然不同的数据,所以方法是相同的但参数会有所不同。是否有最佳实践或设计模式,我可以使用接口和多态,同时将不同的数据传递给方法?
泛型不一定能解决我的问题,因为每个插件的参数数量和类型都不同。我正在考虑在实现它们时在方法中创建一个容器,从全局源中检索参数,因此我可以在测试时将不同的依赖项注入到该全局源中,但我不确定是否会破坏任何抽象规则。
编辑:
这是一个代码示例:
public interface IPlugin
{
void Load();
}
public Hubbub : IPlugin
{
public void Load(int individualId, IApiDataSource apiDataSource)
{
//code
}
}
public class SysEx : IPlugin
{
Load(OAuthToken token, string connString, User user)
{
//code
}
}
public class FriendPlat: IPlugin
{
Load(string username, string password)
{
//code
}
}
答案 0 :(得分:1)
您可以创建一个界面,例如ILoadArgument
为每个IPlugin实现创建一个类,例如FriendlyPlatArgument,SysExArgument等。这些dto类可以实现您创建的ILoadArgument接口。可能是他们都需要一个共同的属性,例如CreatedAt,它也可以转到界面。
现在您的IPlugin接口可以将Load方法定义为
Void Load(ILoadArgument arg);
然后你可以把它变成通用的:
Void Load(T arg)其中T:ILoadArgument {°°°}