一個問題是,所有的規則都在他們一些迴旋餘地,你必須使用自己的最佳判斷。
例如,你現在所描述的應用程序在我看來如此簡單,我可能會做它在一個類中,也許一對夫婦嵌套,也許匿名類的。無論如何,我可以做一個合適的案例,將整個事件整合到一個源文件中,聲稱多個源文件實際上會增加整個事物的複雜性。
但是如果你的GUI有一些不同的控件,或許每個控制不同的行爲,這將成爲一次分裂的功能了這樣你就不會用麪條代碼大碗結束了。
Java GUI庫嘗試從模型中自然分離(視圖+控制器)。我們鼓勵您在一個模塊(=文件)中定義和顯示GUI,但要將數據模型和功能放在另一個模塊中。對於複雜的GUI,可能還有多個由代碼組成的GUI實現模塊。
讓事情「乾淨」的一種方法是在「層」中工作,其中每個層只「知道」它需要知道的東西。具體而言,GUI層需要知道其基礎模型–表的存在和列表以及不需要連接到TableModel
和ListModel
等等。儘管如此,它並不需要了解這些模型的細節,所以它可以通過界面簡單地引用這些模型。
另一方面,模型層不需要關於GUI的知識。知道的越少越好,這在理論上可以讓您無需觸摸模型即可交換GUI。
我的模型還可以包含ActionListener
以迴應由例如在GUI中按下按鈕。
當然,對模型的操作和更改通常會導致GUI的更改。如果模型層不知道GUI,如何將這些更改傳遞給GUI?你可以在這裏使用綁定的bean屬性。這裏有一個簡短的教程:http://www.javalobby.org/java/forums/t19476.html。所以你有相同的結構:變化發生在你的模型中,它們通過模型中的屬性更改支持傳遞給bean,GUI可以將偵聽器附加到這些屬性以找出發生了變化的東西。
無論您是在模型代碼中執行實際的有效操作(例如寫入文件,轉換數據,無論是否),還是將「處理」代碼拆分爲另一個模塊都取決於您,並且將依賴於您的混亂程度模型已經是。如果有一小部分領域和方法在那裏感到孤獨,你可能決定把它們混合在一起,但是當它開始變得凌亂時,你會想要將你的處理代碼重構到它自己的模塊中。處理聽起來像是不想知道其他模塊的那種模塊;你最終可能只是從模型級調用它的方法。
我已經描述了我做GUI開發的基本風格。當然還有其他建議,你可能會根據自己的經驗開發自己的風格。這只是爲了給你一個想法和一個可能的起點。
感謝您的示例和書籍鏈接。這正是我需要讓我走上正確的軌道。 – MESLewis 2010-01-06 15:55:02
我祝你一切順利。每個人都必須從某處開始......真正理解如何構建程序需要一段時間。當你開始的時候,你總是可以放棄它,只需將它們拼湊在一起即可實現SOMETHING的運作。你可能會自己看到它有什麼問題。 :) – 2010-01-06 15:57:09