Правильная реализация MVP в TornadoFX без использования inject () - PullRequest
0 голосов
/ 15 апреля 2019

Я хочу реализовать MVP в TornadoFX без использования его инъекции (потому что это ухудшает читабельность и, по моему мнению, не имеет никакого смысла).

Моя идея хорошей реализации MVP заключается в следующем:

interface ModelEventHandler {...}
interface ViewEventHandler {...}
class Model(val eventHandlers: List<ModelEventHandler> = listOf<ModelEventHandler>())
class View(val eventHandlers: List<ViewEventHandler> = listOf<ViewEventHandler>())
class Presenter(val view: View): ModelEventHandler, ViewEventHandler

Который затем можно использовать следующим образом:

val model = Model()
val view = View()
val presenter = Presenter(view)
model.eventHandlers += presenter
view.eventHandlers += presenter

Проблема в том, что с TornadoFX вы вынуждены позволить классу App выполнить инициализацию представления за вас, и вы не можете передавать какие-либо параметры, вы также не можете выбрать порядок, в котором модель, представление и инициализатор Presenter (что не так уж и большая проблема, но я могу представить, что это вызывает некоторые проблемы).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...