我写了一个连接到某些第三方API的dll,每个DLL具有以下方法:SignIn
,Upload
,Download
,SignOut
。
我的经理要求我实现工厂模式,因为将来我将向具有相同方法签名的其他API写入更多dll。
现在我有:
DLL 1:OneDrive
它有一个带有方法的类:SignIn
,Upload
,Download
,SignOut
。
因此,如果我要使用它,则要添加对此DLL的引用,然后任何应用程序都可以使用此DLL。
DLL 2:DropBox
它也具有方法类:SignIn
,Upload
,Download
,SignOut
。
我的问题:如何在本教程中实现工厂方法设计模式?
我做了什么:我创建了另一个DLL(“新DLL”),该DLL将包含“ FactoryClass”,问题是此DLL中的创建者应返回类型“ OneDrive”或“ DropBox”,这意味着我应该将引用添加到前两个dll(“ OneDrive”和“ DropBox”)。
但是,“ OneDrive”和“ DropBox”类应该在新的dll中实现一些抽象类,这意味着我应该将引用添加到新的dll中。
但这是不可能的,因为它是循环依赖项(Visual Studio错误)
答案 0 :(得分:0)
为了消除循环依赖关系,必须将依赖关系保持在主装配体的方向上。
这在此中央程序集中声明了一个接口(或抽象类),部分解决了该问题,但还有另一个问题,即在不直接引用依赖关系的情况下实例化具体实现。
这可以通过允许工厂保留可用实现的注册表来解决。您可以找到一个a simple factory with registration in this other stack overflow question
的示例