在不使用inject()的情况下,在TornadoFX中正确实现MVP

时间:2019-04-15 15:12:44

标签: kotlin tornadofx

我想在TornadoFX中实现MVP,而不使用它的注入(因为它损害了可读性,并且我认为毫无意义)。

我对实现最佳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类为您进行视图初始化,并且您无法传递任何参数,也无法选择模型,视图的顺序并初始化演示者(在这里这不是什么大问题,但我可以想象会引起一些问题)。

0 个答案:

没有答案