MVP: нормально ли, чтобы представление передавало (экземпляр модели) зависимость докладчику? - PullRequest
0 голосов
/ 02 апреля 2020

Я знаю, что в MVP представление не касается модели, поскольку вместо этого оно делегирует Presenter.

Однако в моем приложении мне нужно предоставить зависимость в конструкторе Presenter, который является частью модели:

class Presenter(view: View, dependency: Model) {
    ...
}

Причина, по которой мне нужно это сделать, состоит в том, чтобы упростить модульное тестирование (и я не хочу использовать инфраструктуру DI).

Это нормально для представление для создания экземпляра модели и передачи его в Presenter?

class View {
    init {
        val presenter = Presenter(this, Model())
        ...
    }
}

Или Presenter должен предоставить другой конструктор, который создает зависимость, позволяя View вызывать ее вместо этого?

class Presenter(...) {
    constructor(view: View) : this(view, Model())
}

class View {
    fun initialize() {
        val presenter = Presenter(this) // no longer instantiating Model
        ...
    }
}

Мне нравится простота создания экземпляра и передачи зависимости сама по себе, но я не уверен, уместно ли для представления знать о модели.

...