2009-12-06 28 views
1

我正在爲一個賦值重構一些代碼 - 當前視圖有很多按鈕和菜單以及一個動作偵聽器,它們通過使用event.getSource()來決定要做什麼。從我讀過的內容看來,人們似乎認爲每個GUI組件都有更好的自己的動作偵聽器,可能是通過某種工廠創建的。然而,除了清理代碼之外,它還有什麼其他的好處 - 這也不意味着更多的對象會堆在堆上,並可能影響性能?在Actionlistener中使用EventObject.getSource

感謝,

阿里

回答

1

使用單獨的偵聽器意味着您不應該執行布爾測試來確定應該在偵聽器中執行什麼操作。這有兩個好處

  • 首先它使代碼運行得更快。

  • 其次,它增強了代碼的可維護性和可擴展性。如果您需要添加新組件,則不需要修改現有方法。

如果您嘗試有一個監聽器(通常是小應用程序或應用程序對象本身)作爲偵聽多個部件,然後你被撤消的基本調度這是中央的調用方法,並用手正在執行調度。這要求使用某種開關機制來區分您正在處理的事件的各個組件。該系統比你更容易做到這一點。隨着程序的增長,這種開關結構既容易出錯又難以維護。保留調度到系統。

來源:Patterns for Java Events

0

這是一個權衡。源碼上有一堆if的代碼被認爲是醜陋的,而大量的聽衆可能會混淆你的記憶並對性能產生負面影響。

考慮到選擇,我通常會盡量減少要編寫的代碼量,因爲代碼越少通常意味着錯誤發生的機會越少。