如何使用Cake Pattern强制执行包容

时间:2016-07-17 13:15:41

标签: scala dependency-injection cake-pattern

我一直在阅读Scala中的Cake Pattern(我知道这是旧的东西),我无法看到或想象一种方法来锁定具体的类,所以依赖关系不会从类泄漏他们被注射了。

一个简单的当前示例来自play-reactive-mongo-db激活器模板。在该应用程序中,控制器使用ReactiveMongoComponents特征来获取驱动程序ReactiveMongoApi的实例。

现在,问题是控制器继承有一个公共方法来返回reactiveMongoApi的实例,因此打破了两个基本原则:封装和信息隐藏。我知道这个例子并不好(因为控制器不应该访问任何数据存储),但是如果有域服务或存储库则同样适用。我知道那些类(域服务,存储库等)将具有定义可访问方法的特征,并且不会有公共方法/属性来获取依赖性,但具体实现确实泄漏。

TL; DR:Cake模式泄漏了具体实现的依赖性,如何避免这种情况?

0 个答案:

没有答案