Я знаю, что в 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
...
}
}
Мне нравится простота создания экземпляра и передачи зависимости сама по себе, но я не уверен, уместно ли для представления знать о модели.