我刚刚阅读了Jonas 关于 Cake Pattern 的著名文章,例如:
class UserRepository {
def authenticate(user: User): User = {
println("authenticating user: " + user)
user
}
def create(user: User) = println("creating user: " + user)
def delete(user: User) = println("deleting user: " + user)
}
根据那篇文章,为了使用蛋糕模式,它需要作为内部类包装在一个特征中,例如:
trait UserRepositoryComponent {
val userRepository: UserRepository
class UserRepository {
...
}
}
所以我想知道:
- 这是实现蛋糕模式的唯一方法吗?
UserRepository
如果是这样,这是否意味着在设计诸如蛋糕模式之类的类时必须考虑到它(以便可以将它们包装在特征中)?- 如果答案是肯定的,是否有任何常见的做法可以将未在包装器中定义的类包含到基于蛋糕模式的设计中?(在概念上类似于适配器)