我有一个电子邮件组件,正在集成到我的应用程序中,正在寻找一些关于如何围绕它构建包装器的提示,以便我可以在需要时将其与另一个第三方组件交换。
我现在的做法是:
- 构建一个包含我需要的功能的界面。
- 创建一个实现该接口(interface)的类,并在该类中使用我的第 3 方组件。
此组件的任何使用都将通过接口(interface)进行,如下所示:
IPop3 pop3 = new AcmeIncePop3Wrapper(); pop3.connect();
AcmeIncePop3Wrapper 内部将是:
public void connect()
{
AcmeIncePop3 pop = new AcmeIncePop3();
pop.connect();
}
这是一个好方法吗?
我可能可以使用 ninject 添加另一个抽象,这样我就可以交换实现,但实际上这似乎是我所需要的,因为我不希望每天更改第 3 方程序集,只是不想让事情是如此紧密地耦合。
最佳答案
我认为你有一个很好的实现。基本上你的界面说“这就是我想要处理电子邮件的方式”,第三方组件可能会做不同的事情,但是如果你基于你的界面构建包装类,你应该能够将任何第三方组件工作到该界面中。
您可能需要注意的唯一一件事是您在哪里更新具体类。如果你经常更新它,你可以考虑使用工厂或其他东西 - 如果不是,那可能没什么大不了的。我只是在想,如果您在各处创建 new AcmeIncePop3() ,那么它仍然与该具体类紧密耦合。
关于c# - 围绕第 3 方程序集创建包装器 - 交换和解耦,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1723003/