在资源控制器中使用多个服务的最佳方法是什么?

时间:2015-04-01 14:54:50

标签: java spring rest design-patterns

我有一个控制器可以调用三个服务:

public class ProductController(){
@Autowired
private AccountService accountService;
@Autowired
private ProcessService processService;
@Autowired
private releaseService releaseService;

@RequestMapping("/process")
    public Product process(@RequestParam(value="name", defaultValue="docs")     ProductProcessed process) {

    accountService.notify();
    releaseService.sendRelease(process);


    return processService.process(process);
}

}

封装此服务调用的最佳方法是什么?

2 个答案:

答案 0 :(得分:3)

您正在寻找的可能是一些设计模式。我的方法可能是在细粒度服务(Account,Process和Release)上创建粗粒度facade。 (另见Coarse-grained vs fine-grained

Facade基本上会在其中注入这3个服务,并封装您当前正在执行控制器的行为。这样,您将最小化业务逻辑,以便在控制器中调用粗粒度服务,从而进一步封装系统的内核。

答案 1 :(得分:1)

您已将它们标记为私有,因此无法在此类之外调用它们。这是封装的。

通常的做法是自动装配它们,以便修改服务的实施。