Всегда ли Cake Pattern должен быть реализован как внутренний класс?
Я только что прочитал известную статью Джонаса о 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)
}
Согласно этой статье, для использования Cake Pattern его необходимо обернуть как внутренний класс в признаке, например:
trait UserRepositoryComponent {
val userRepository: UserRepository
class UserRepository {
...
}
}
Вот мне и интересно
- Это единственный способ достичь Cake Pattern?
- Если так, значит ли это класс, такой как
UserRepository
должен быть разработан с учетом Cake Pattern во время его разработки (чтобы их можно было обернуть в черту)? - Если ответ "да", есть ли распространенная практика, которая может включать класс, который не определен в оболочке, в дизайн, основанный на Cake Pattern? (что-то похожее на адаптер в концепции)