工厂模式,其中具体类位于单独的DLL上

时间:2019-05-21 10:49:40

标签: c# design-patterns factory-pattern

我写了一个连接到某些第三方API的dll,每个DLL具有以下方法:SignInUploadDownloadSignOut

我的经理要求我实现工厂模式,因为将来我将向具有相同方法签名的其他API写入更多dll。

现在我有:

DLL 1:OneDrive

它有一个带有方法的类:SignInUploadDownloadSignOut

因此,如果我要使用它,则要添加对此DLL的引用,然后任何应用程序都可以使用此DLL。

DLL 2:DropBox

它也具有方法类:SignInUploadDownloadSignOut

  

我的问题:如何在本教程中实现工厂方法设计模式?

我做了什么:我创建了另一个DLL(“新DLL”),该DLL将包含“ FactoryClass”,问题是此DLL中的创建者应返回类型“ OneDrive”或“ DropBox”,这意味着我应该将引用添加到前两个dll(“ OneDrive”和“ DropBox”)。

但是,“ OneDrive”和“ DropBox”类应该在新的dll中实现一些抽象类,这意味着我应该将引用添加到新的dll中。

但这是不可能的,因为它是循环依赖项(Visual Studio错误)

1 个答案:

答案 0 :(得分:0)

为了消除循环依赖关系,必须将依赖关系保持在主装配体的方向上。

这在此中央程序集中声明了一个接口(或抽象类),部分解决了该问题,但还有另一个问题,即在不直接引用依赖关系的情况下实例化具体实现。

这可以通过允许工厂保留可用实现的注册表来解决。您可以找到一个a simple factory with registration in this other stack overflow question

的示例