我创建了一个计算某些事物的算法。这可以被认为是模型。该算法以全功能方式实现,因此它仅使用不可变类。现在使用这个模型,我想在它上面开发一个 GUI 层。但是,我对在 Scala 中构建 GUI 的最佳实践一无所知。我打算使用 ScalaFX。
我的问题如下:在 ScalaFX(类似于 JavaFX)中,您可以将 GUI 中的值绑定到对象属性。这显然违反了函数范式,但看起来很方便。这将需要重写我的类以使用可绑定的属性,这感觉就像摇尾巴一样——模型将取决于 GUI。
另一方面,我可以有一个独立的 GUI 层。在这种情况下,我需要绑定代理对象,并且必须基于这些代理对象创建模型对象。这会感觉更惯用,但意味着大量的代码重复和额外的工作。我的模型和代理对象必须保持同步,并且我必须负责复制属性。
这样做的好方法是什么?GUI 总是充满了可变性,所以函数式编程在这里并不合适。尽管如此,我还是喜欢 Scala,所以我也想继续将它用于 GUI。