0

假设我有多个类都具有相同的操作(在我的情况下,我正在创建一个插件框架:加载、运行、处置),并且我想使用一个接口,以便我可以创建一个 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
    }
}
4

1 回答 1

1

您可以创建一个接口,例如 ILoadArgument

为每个 IPlugin 实现创建一个类,例如 FriendlyPlatArgument、SysExArgument 等。这些 dto 类可以实现您创建的 ILoadArgument 接口。可能他们都需要一个公共属性,例如 CreatedAt 也可以转到界面。

现在您的 IPlugin 接口可以将 Load 方法定义为

空载(ILoadArgument arg);

您也可以将其通用为:

空载(T arg) 其中 T:ILoadArgument{°°°}

于 2018-06-08T22:59:16.740 回答