动态地将自定义功能添加到服务/服务中介

时间:2014-07-12 10:11:15

标签: java spring design-patterns

我使用spring框架开发了一个通用的业务服务。必须从不同的渠道,即网络和移动渠道访问该服务。每个渠道都有自己的业务规则,必须动态添加到通用服务功能。例如,如果网络渠道进行一些额外的验证,然后调用通用服务。如果移动信道呼叫服务A,则服务B然后通用服务。 我的问题是在不使用ESB的情况下实现此类服务调解的最佳设计模式/方式是什么?

1 个答案:

答案 0 :(得分: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