Перезапись класса в `Html.EditorFor`

Я читал эту статью несколько раз:

http://jonasboner.com/2008/10/06/real-world-scala-dependency-injection-di.html

Я думаю что я понимаю. Однако есть кое-что, чего я не совсем понимаю.

Глядя на его пример UserService, я вижу, что он настроил UserRepositoryComponent для инкапсуляции UserRepository. Но я не понимаю, почему UserRepositoryComponent играет две роли: он инкапсулирует UserRepository, а также предлагает ссылку на объект UserRepository.

Я пытаюсь представить, как бы я использовал этот шаблон, если бы хотел создать службу, которая зависит от двух экземпляров UserRepository. Возможно, задача нового сервиса - копировать пользователей из «источника» UserRepository в "целевой" UserRepository. Итак, я представляю себе что-то вроде этого:

trait CopyUserServiceComponent {
  val source: UserRepositoryComponent
  val destination: UserRepositoryComponent
  class CopyUserServiceComponent { 
    ... 
  }
}

Но это отличается от исходного шаблона. В этом случае я определяю зависимости в самом компоненте, вместо того, чтобы наследовать их от какого-либо другого компонента. Но мне кажется, что это правильный способ сделать это: компоненты должны объявлять свои зависимости, а не экземпляры своих включенных служб.

Что мне здесь не хватает?

6
задан Willis Blackburn 2 November 2010 в 15:06
поделиться