c# - 单个 API 类加载其他类的设计模式

标签 c# .net design-patterns inheritance

我正在使用提供 API 的第三方产品。此 API 的工作原理是创建基类的实现,然后在 app.config 中指示您要使用的实现。

问题是在这个第三方应用程序中可能有多个项目。我想做的是创建一个实现基类的包装类。这将查看参数,然后查找配置以确定将处理传递给哪个其他类,具体取决于正在使用的项目。这样我们就可以在不修改任何现有代码的情况下将 future 的项目添加到系统中。

public class MyImplementation : ThirdPartyBaseClass
{
    public override OnLoad(ThirdPartyType data)
    {
        //do stuff
    }

    public override Process(ThirdPartyType data)
    {
        //do stuff
    }
}

大约有 15 个方法可以被覆盖。基类方法似乎是空的,因为如果你不覆盖一个方法,什么也不会发生,所以我需要我的包装器能够处理我需要用于这个项目的类型可能没有实现部分或全部的情况方法。

有人知道适合这种情况的设计模式吗?

最佳答案

正如罗伯特在评论中所说,抽象工厂似乎适合这个。 检查这个wiki link还有这个dofactory link有关这方面的更多信息。

对于更具体的回应,我有一些疑问。 有一个从第三方 API 获取的基类对象。现在,当您说可以在此工具中拥有多个项目时,我的意思是您需要使用此基类来创建您定义的多个“项目”类吗?

然后,包装类可以具有接口(interface)IProject 的对象类型。这应该具有所有定义,例如 OnLoadProcess。每种类型的项目都会有一个具体的类,并根据项目类型最终实现。

希望这有助于给你一个方向!

关于c# - 单个 API 类加载其他类的设计模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12291056/

相关文章:

c# - 在 C# 中创建枚举时出错 - "identifier expected"

c# - 以编程方式启用(安装)IIS

c# - 使用 ComboBox 将 DataGridView 绑定(bind)到 DataTable 不起作用

c++ - 避免公共(public)类中重复代码

c# - 阻止访问构造函数/仅特定类可以访问

c# - Linq(groupBy?)问题

c# - 自定义 app.config 列表在 ApplicationConfiguration.GetSection() 上产生错误

c# - OpenXml 多图像

design-patterns - 我们什么时候应该创建一个新方法?

java - MVP 安卓 : how to pass data from one activity to another?