适配器还是代理?

时间:2013-02-11 06:12:18

标签: c# design-patterns

如果有3个班级,我需要选择1个班级。然后通过使用标准方法,我可以访问该文件。具有1种标准方法的原因是如果使用不同的协议则防止重写代码。

示例,我有3个名为MAPIWebDAVEWS的班级。每个类都有自己的从Exchange Server检索信息的方法。我想拥有一个具有访问每个类的所有标准方法的类。作为系统管理员,我选择使用哪个协议,然后我选择系统应该做什么过程(检索信息,更新信息等)。这样,系统管理员不需要具有编程知识,因为他/她不必在每次他/她改变协议时编辑代码。

我应该使用哪种设计模式?我应该使用适配器设计模式还是代理设计模式?我目前正在使用代理设计来设计有抽象类的地方,另外3个类,A B和C,以及另外1个类,Manager类,继承抽象类中的方法。

我使用Manager类来管理对1个类的访问。但是当我看到适配器模式时,它似乎是一个更好的选择。我应该使用哪个?

2 个答案:

答案 0 :(得分:1)

听起来这里既不需要适配器也不需要代理设计模式。

从你的问题来看,听起来你有一个抽象的基类,它提供了一个通用的操作接口,三个使用不同协议的具体类,以及一个管理器(工厂)来实例化所需的具体类。听起来不错。

答案 1 :(得分:0)

如果尚未实现对MAPI,WebDAV,EWS的支持作为单独的类(库)没有通用接口,那么只需使用公共接口即可:应该有公共接口((Providers)的具体实现IDataProvider),不需要设计模式。

如果您已经实施对MAPI,WebDAV,EWS的支持作为单独的类(库)没有通用接口那么Adapter pattern将是好的。例如,具体实现没有公共接口(请参阅Create()CreateItem()AddItem()方法):

Class diagram

在这种情况下,Provider类是适配器。