【问题标题】:Dynamically add custom functionality to a service / service mediation向服务/服务中介动态添加自定义功能
【发布时间】:2014-07-12 18:36:25
【问题描述】:
我已经使用 spring 框架开发了一个通用的业务服务。必须从不同的渠道(即网络和移动渠道)访问此服务。每个渠道都有自己的业务规则,必须动态添加到通用服务功能中。例如,如果网络频道进行一些额外的验证,然后调用通用服务。如果移动频道呼叫服务 A,则服务 B,然后是通用服务。
我的问题是在不使用 ESB 的情况下实现此类服务中介的最佳设计模式/方式是什么?
【问题讨论】:
标签:
java
spring
design-patterns
【解决方案1】:
我认为您正在寻找可以在运行时附加额外责任的装饰器模式。您可以做的是
Public Class GenricValidationService extends ValidationService{
public void Validate(){
// do stuff here
}
}
Public Class WebChannelService extends ValidationService{
public WebChannelService (ValidationService validationService){
this.validationService= validationService;
}
ValidationService validationService;
public void Validate(){
genericValidationService.validate();
// extra validation
}
}
类似
Public Class ServiceB extends ValidationService{
public ServiceB (ValidationService validationService){
this.validationService= validationService;
}
ValidationService validationService;
public void Validate(){
validationService.validate();
// extra validation
}
}
见
Decorator Pattern for IO
Decorate Your Java Code