1. 程式人生 > >JavaFX學習筆記——重要理念的建立與辨析(五)

JavaFX學習筆記——重要理念的建立與辨析(五)

處理器註冊與定義分離

問題

     看過相關教程後,我們肯定對JavaFX在事件處理上,介紹的lambda表示式以及內部類簡潔用法印象深刻。但細想後其仍有很大的侷限性。

    侷限一:不適用與團隊開發

            UI程式設計師與功能開發程式設計師協作起來困難重重,因為功能開發程式設計師的對handler功能的每一次修改或擴充套件,都需要UI程式設計師對handler註冊位置的程式碼進行同步修改。

    侷限二:不適用對於複雜性高的handler不適用

            因為lambda表示式要求,匿名物件只有一個方法,因此要把handler所需要的所有處理全部放進一個方法中,這使得handler中不同子模組的耦合性增大,可讀性降低,可重用性直接沒有。(對於子模組的重用,java沒有區域性方法變數這麼一說;而對於整個handler的重用,因為是建立的是匿名物件,所以沒辦法在其他地方再次獲得。)

 

解決方法

     對於解決侷限一,需要用外部類,在新檔案中按部就班地定義實現了EventHandler<EventType>介面的新類,然後在需要它的檔案中import再建立新物件呼叫。

     對於解決侷限二,則不能用lambda表示式,需要用類來為不同子模組定義不同方法。

 

總結

     在handler不是特別簡單或者需要可擴充套件性和可重用性的情況下,請把事件處理器handler的註冊與其定義分離在不同的檔案中進行