我必须为不同的客户端实现API。每个客户的实施将有所不同。所以,我正在考虑在groovy中使用策略模式(类似于Java),我将拥有一个接口,并且每个客户端我将创建一个类(实现一个接口),我想配置要使用UI调用的类(通过接口选择课程的下拉列表。)
interface PricingStrategy {
}
class CanadaPricingStrategy implements PricingStrategy {
Method 1...
Method 2...
}
class BrazilPricingStrategy implements PricingStrategy {
Method 1...
Method 2...
}
这是最好的方法吗?或者我可以使用闭包作为变量来使用可插拔行为方法?
答案 0 :(得分:2)
这是最好的方法吗?或者我可以使用可插拔行为 使用闭包作为变量的方法?
如果不了解更多有关要求的信息,就不可能肯定地说,但总的来说,您所描述的基于接口的方法是有意义的。这仍然是可插拔的。您可以为每个实现创建一个单独的插件,并且可以使用提供不同行为的不同插件构建不同版本的应用程序。您可以使用动态发现机制来加载类路径上的所有PricingStrategy
实现。您有很多选择,但几乎没有关于您的要求的信息,我会说基于接口的方法是一个坚实的起点。
答案 1 :(得分:0)
我会根据下面提到的句子将你的问题陈述分为两部分:
根据以下两点,我建议您使用两种不同的设计模式来实现问题陈述:
适配器设计模式:应始终使用适配器设计模式设计API,因为源和客户端接口可能不兼容,并且此设计模式将不兼容的接口转换为客户端所需的另一个接口。 这种类型的情况总是发生在API的设计中,因为两种情况下都有不同类型的技术,参数等。
策略设计模式:不同客户端的内部逻辑实现不同。所以,你应该在策略模式的帮助下设计它。
并且,将此策略模式称为适配器设计模式。