Всегда ли 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 {
    ...
  }
}

Вот мне и интересно

  1. Это единственный способ достичь Cake Pattern?
  2. Если так, значит ли это класс, такой как UserRepository должен быть разработан с учетом Cake Pattern во время его разработки (чтобы их можно было обернуть в черту)?
  3. Если ответ "да", есть ли распространенная практика, которая может включать класс, который не определен в оболочке, в дизайн, основанный на Cake Pattern? (что-то похожее на адаптер в концепции)

0 ответов

Другие вопросы по тегам