MVP - Внедрение зависимостей и модель - PullRequest
4 голосов
/ 31 мая 2009

Для данного вида используется Presenter, а в Presenter у вас есть модель.

Как вы вводите модель в презентер? Если бы мне нужно было внедрить его на уровне представления, вы бы вернулись к исходной точке с бизнес-логикой в ​​представлении - иначе представление не должно знать о своей модели.

Любой совет?

1 Ответ

3 голосов
/ 05 июня 2009

Вы должны ссылаться на шаблон пассивного просмотра. В шаблоне Supervising Controller представление связывается с моделью для синхронизации.

Для пассивного просмотра Вы правы. Обычно вы делаете это либо в своей функции Main, либо в классе конфигурации, который вы можете вызывать из Main. Поскольку язык не указан, я написал пример на C #.

static void Main(string[] args)
{
    Model model = new Model();
    View view = new View();
    Presenter presenter = new Presenter(view, model);
}

public Presenter(IView view, IModel model)
{
    this.View = view;
    this.View.Presenter = this;
    this.Model = model;
}

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

...