2013-04-02 46 views
0

當前正在使用JavaFX 2作爲框架的GUI應用程序。在Java中使用並知道數據綁定的原理。模式來彌合斯卡拉函數不可變風格和JavaFX 2屬性之間的差距?

由於scala中的函數式編程提倡使用不可變的值(vals),所以存在一定的差距。

是否有其他的解決方案,而不是有一個可變的基於fx屬性的演示模型的gui和不可變模型的應用程序邏輯與轉換層?

映入眼簾, 安德烈亞斯

+0

這是一個真正的問題嗎? JavaFX是建立在屬性綁定上的,UI自然是可變的。 –

+0

將單獨的域模型和表示模型類與「轉換層」作爲表示模型中的方法很可能是最佳解決方案。 –

+0

你問的問題可能太抽象了。你能舉一個你如何使用JavaFX的例子嗎? –

回答

0

因爲你的問題是有點模糊,請原諒,如果這在很大程度上是基於個人觀點:有,據我所知,沒有其他的辦法來可變屬性模型。然而,我會爭辯說,你不想要一個:至少從純粹的角度來看,函數式編程的第一個嘗試避免副作用。然而,用戶界面完全是關於造成副作用的。從那裏開始,有一點點的哲學錯位。

不可變數據的一個主要優點是您不必處理控制結構以避免併發修改。但是,JavaFX的事件隊列實現了一個非常嚴格的單線程方法,並具有對讀寫訪問的隱式控制。另一方面,用戶界面組件比其他大多數編程領域更適合可變對象的思想。畢竟,節點結構是有狀態組件的固有層次結構。

考慮到這一點,我認爲試圖強制JavaFX的功能和不可變範例是不會奏效的。相反,我會建議根據關鍵路徑選擇構建翻譯層 - 例如綁定Label以向Person顯示(不可變)Person的名稱,而不是名稱屬性,並讓解析器處理對name屬性的訪問。基本上,這意味着要有一個Bindings#select和一個JavaBeanStringProperty的組合。