战略模式

时间:2017-11-01 07:46:22

标签: java grails design-patterns groovy

我必须为不同的客户端实现API。每个客户的实施将有所不同。所以,我正在考虑在groovy中使用策略模式(类似于Java),我将拥有一个接口,并且每个客户端我将创建一个类(实现一个接口),我想配置要使用UI调用的类(通过接口选择课程的下拉列表。)

interface PricingStrategy {


}



class CanadaPricingStrategy implements PricingStrategy {

  Method 1...
  Method 2...

}

class BrazilPricingStrategy implements PricingStrategy {

  Method 1...
  Method 2...

}

这是最好的方法吗?或者我可以使用闭包作为变量来使用可插拔行为方法?

2 个答案:

答案 0 :(得分:2)

  

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

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

答案 1 :(得分:0)

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

  1. 为不同的客户端实现API。
  2. 而且,每个客户的实施都会有所不同。
  3. 根据以下两点,我建议您使用两种不同的设计模式来实现问题陈述:

    1. 适配器设计模式:应始终使用适配器设计模式设计API,因为源和客户端接口可能不兼容,并且此设计模式将不兼容的接口转换为客户端所需的另一个接口。 这种类型的情况总是发生在API的设计中,因为两种情况下都有不同类型的技术,参数等。

    2. 策略设计模式:不同客户端的内部逻辑实现不同。所以,你应该在策略模式的帮助下设计它。

    3. 并且,将此策略模式称为适配器设计模式。