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

Factory pattern where concrete classes are on separate DLLs

我写了一个连接到某个第三方的 dll API,每个 DLL 都有方法:SignInUploadDownloadSignOut .

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

现在我有:

DLL 1: OneDrive

它有一个 class 方法:SignIn,Upload,Download,SignOut.

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

DLL 2:DropBox

它还有 class 方法:SignIn,Upload,Download,SignOut.

My question: How do I implement the factory method design pattern in this secnario?

我做了什么:我创建了另一个 DLL("The new DLL") 这个 DLL 将包含 "FactoryClass",问题是这个 dll 中的创建者应该 return 一种 "OneDrive" 或 "DropBox" 这意味着我应该添加对前两个 dll 的引用("OneDrive" 和 "DropBox")。

但是,classes "OneDrive" 和 "DropBox" 应该在新的 dll 中实现一些抽象 class,这意味着我应该添加对新 dll 的引用。

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

为了消除循环依赖,必须保持主程序集方向的依赖。

这部分通过在此中央程序集中声明的接口(或抽象 class)解决,但还有一个额外的问题,即在不直接引用依赖项的情况下实例化具体实现。

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

的示例