首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >战略模式

战略模式
EN

Stack Overflow用户
提问于 2017-11-01 07:46:22
回答 2查看 214关注 0票数 0

我必须为不同的客户端实现API。每个客户端的实现将是不同的。因此,我正在考虑使用groovy中的策略模式(类似于Java),在该模式中,我将拥有一个接口,并为每个客户端创建一个类(它实现了一个接口),我希望通过接口配置使用UI(类的下拉选择)调用的类。

代码语言:javascript
复制
interface PricingStrategy {


}



class CanadaPricingStrategy implements PricingStrategy {

  Method 1...
  Method 2...

}

class BrazilPricingStrategy implements PricingStrategy {

  Method 1...
  Method 2...

}

这是最好的方法,还是我可以使用可插拔行为方法,使用闭包作为变量?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-11-01 15:11:57

这是最好的方法,还是我可以使用可插拔行为方法,使用闭包作为变量?

如果不了解更多的需求,就不可能确定地说,但是一般来说,您所描述的基于接口的方法将是有意义的。还是可以插上的。您可以为每个实现创建一个单独的插件,并且可以使用不同的插件构建不同版本的应用程序,这些插件提供了不同的行为。您可以使用动态发现机制来加载类路径上的所有PricingStrategy实现。您有很多选项,但是由于几乎没有关于您的需求的信息,我想说,基于接口的方法是一个坚实的起点。

票数 2
EN

Stack Overflow用户

发布于 2017-11-01 17:00:37

我将根据下面提到的句子将你的问题陈述分为两部分:

  1. 为不同的客户端实现API。
  2. 而且,每个客户端的实现都是不同的。

根据两点,我建议您使用两种不同的设计模式来实现您的问题陈述:

  1. 适配器设计模式:API应该始终使用适配器设计模式进行设计,因为源接口和客户端接口可能是不兼容的,而且这种设计模式会将不兼容的接口转换为客户端需要的另一个接口。这种情况往往发生在API的设计中,因为双方都有不同的技术、参数等情况。
  2. 策略设计模式:不同客户端内部逻辑实现不同。所以,你应该用策略模式来设计它。

并将此策略模式称为Adapter模式。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47050345

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档