JavaFX學習筆記——重要理念的建立與辨析(五)
阿新 • • 發佈:2018-11-19
處理器註冊與定義分離
問題
看過相關教程後,我們肯定對JavaFX在事件處理上,介紹的lambda表示式以及內部類簡潔用法印象深刻。但細想後其仍有很大的侷限性。
侷限一:不適用與團隊開發
UI程式設計師與功能開發程式設計師協作起來困難重重,因為功能開發程式設計師的對handler功能的每一次修改或擴充套件,都需要UI程式設計師對handler註冊位置的程式碼進行同步修改。
侷限二:不適用對於複雜性高的handler不適用
因為lambda表示式要求,匿名物件只有一個方法,因此要把handler所需要的所有處理全部放進一個方法中,這使得handler中不同子模組的耦合性增大,可讀性降低,可重用性直接沒有。(對於子模組的重用,java沒有區域性方法變數這麼一說;而對於整個handler的重用,因為是建立的是匿名物件,所以沒辦法在其他地方再次獲得。)
解決方法
對於解決侷限一,需要用外部類,在新檔案中按部就班地定義實現了EventHandler<EventType>介面的新類,然後在需要它的檔案中import再建立新物件呼叫。
對於解決侷限二,則不能用lambda表示式,需要用類來為不同子模組定義不同方法。
總結
在handler不是特別簡單或者需要可擴充套件性和可重用性的情況下,請把事件處理器handler的註冊與其定義分離在不同的檔案中進行