应用于具有完全相同用法的两组不同类的设计模式

时间:2014-09-09 14:39:48

标签: design-patterns

我正在编写一些代码来使用某些api的两个不同版本。这些版本中的每一个都在版本化的包中声明,例如{v1.Connection,v1.query,v1.Result}和{v2.Connection,v2.query,v2.result}等。除了类之外,客户端代码将完全相同是不同的。我可以在这里申请什么设计模式?我无法控制api方面。

1 个答案:

答案 0 :(得分:5)

我不确定这是否是一个特定的设计模式或设计模式的组合(这些天我真的只知道几个,如状态(机器),策略和其他一些) ,但是使用基本的面向对象设计原则,我会采取一种方法:

  • 在v1和v2类(包装类(可能是抽象)或接口)上构建一个抽象层
  • 通过构造函数注入或者通过属性将v1或v2类注入包装类,以便提供各种方法的实际实现等。
  • 使用某种工厂(或者可能是IOC容器)来控制要注入的类的版本。

这使您能够在将来添加更多版本,根据需要更改它们,并保留依赖抽象的客户端代码,而不是与底层实现耦合。