我想知道是否有大約寫一個偵聽instace所有組件或每個組件實例的任何良好做法推薦一個實例。
擴展問題
我正在開發一個Java Swing應用程序。
在相同的形式,我可以有十幾個組件(他們之間沒有關係),使用相同的偵聽器類。我把每個聽衆寫在他們自己的班級裏。
監聽器用於對引入組件的數據進行一些驗證。
我應該爲每個組件創建一個偵聽器類的實例,還是應該爲所有組件使用同一個偵聽器實例?
我找不到任何關於此的良好實踐建議,除了this comment,沒有指出任何參考。
我想知道是否有大約寫一個偵聽instace所有組件或每個組件實例的任何良好做法推薦一個實例。
擴展問題
我正在開發一個Java Swing應用程序。
在相同的形式,我可以有十幾個組件(他們之間沒有關係),使用相同的偵聽器類。我把每個聽衆寫在他們自己的班級裏。
監聽器用於對引入組件的數據進行一些驗證。
我應該爲每個組件創建一個偵聽器類的實例,還是應該爲所有組件使用同一個偵聽器實例?
我找不到任何關於此的良好實踐建議,除了this comment,沒有指出任何參考。
對於ActionListener
的特定情況,使用Action
封裝所需的功能。整個Swing的這個類的廣泛use表明它的價值。這個簡單的example演示了一些內置的文本組件操作;這個更詳細的example顯示瞭如何在菜單和工具欄之間共享操作。
另一種方法是基於事件源的不斷增長和難以維護的if-then-else
梯子。
附錄:啊,我誤解了你的問題。 @ Andrew's comment約爲類;你的問題詢問實例。對於前者,單個聽衆傾向於向known anti-pattern演變;引用的早期版本example說明了這個問題。對於後者,只能按需要使用盡可能多的實例;我通常通過探查器在旅途中發現最嚴重的違規行爲。
你應該選擇一個讓你的代碼易讀和可維護的代碼。
如果創建實例使得它更簡單,繼續前進,但由於行爲保持不變;我相信單一實例應該有效。
我認爲最好的解決方案是讓您的代碼儘可能最乾淨。
基本上,如果有一個單獨的實例不會使代碼過多複雜化,那麼您只能創建一個實例並在整個組件中共享它。否則,你可以有多個實例。
你的想法是非常有趣的........
Moveover如果搖擺....那麼它已經根據MVC
架構......
Model
-業務邏輯和數據
View
-輸出的表示
Controller
-行動完成。
現在我認爲它也有更好的Business Logic with its data together
,所以我們可以很容易地關聯邏輯和它的相應數據。
你總是可以有一個共同的聽衆爲常見的EventSource,像JButton
...
你可以有4 JButton
,這做不同的作品,現在你可以有一個單一的與ActionListener
switch
報表.....很容易處理......
+1。這不是我正在尋找的答案,但我不知道「行動」,似乎很有趣。謝謝 –
@FranciscoPuga:謝謝;我已經詳細闡述過了。 – trashgod