我正在努力在我的应用程序上使用蛋糕模式.
在网上找到的例子中,例子是基本的,但不涉及更复杂的需求.我想做的事情并不那么花哨:我想在蛋糕模式应用程序中使用相同类型的2个服务,使用不同的实现.
trait UserServiceComponent {
self: UserRepositoryComponent =>
val userService: UserService
class DefaultUserService extends UserService {
def getPublicProfile(id: String): Either[Error, User] = userRepository.getPublicProfile(id)
}
class AlternativeUserService extends UserService {
def getPublicProfile(id: String): Either[Error, User] = call webservice here for exemple...
}
}
trait UserService extends RepositoryDelegator[User] {
def getPublicProfile(id: String): Either[Error, User]
}
Run Code Online (Sandbox Code Playgroud)
如果我一次使用一个实现,它工作正常UserService,但如果我在同一时间需要两个实现,我真的不知道如何做到这一点.
我应该创建2个不同的组件吗?每一个都暴露出不同的userService值名称?(defaultUserService/alternativeUserService).使用一个组件进行实现我不知道其他组件在使用名称时如何能够知道使用哪个实现,userService因为我的应用程序中有2个不同的实现.
顺便说一下,当组件表达UserRepositoryComponent对它的依赖关系时,虽然并非所有实现都需要它,但我发现只有一个组件正确有点奇怪吗?想象一下,我不想构建需要两种实现的完整应用程序,但是我需要为了测试只构建不需要的AlternativeUserService,UserRepositoryComponent因为它不会提供这种依赖关系会很奇怪.用过的.
有人可以给我一些建议,以便我知道该怎么做?
一种相关问题: Cake模式:如何获取组件提供的UserService类型的所有对象
谢谢