[英]Some questions about OOP in Java
我有一個帶有按鈕和文本字段菜單的GUI類。 根據菜單和輸入中的選擇,GUI類中的方法正在調用Logic類中的方法以發送輸入並創建Customer類和Account類的新對象,依此類推。
為了能夠在GUI類和Logic類之間進行通信,我首先創建Logic類的對象,然后在GUI類內部進行操作,因為在這里有我的主要方法。 這是最好的方法嗎? 我是否需要在GUI-和Logic類之間使用某種引用變量,或者僅在GUI類的開頭創建對象時使用引用? 我想能夠與一個類進行交流,它必須首先是一個對象! 謝謝!
Logic logic = new Logic();
logic.addCustomer(name, number);
理想情況下,您不應該直接創建邏輯類。 您應該將功能分解為多個小類,每個小類都可以履行職責。
一種簡單的方法是讓GUI類創建偵聽用戶事件的偵聽器。 作為對use事件的響應,它們會觸發您的邏輯為其注冊的事件。 然后,當接收到事件時,邏輯類可以執行功能。 您應該閱讀有關觀察者模式,事件驅動設計的信息。
您可以在http://en.wikipedia.org/wiki/Event-driven_programming上閱讀有關事件驅動程序的信息。
我建議您對MVC架構進行一些研究。 您的GUI(視圖)不應直接與模型(邏輯)進行交互。 實現一個控制器,該控制器將從您的視圖中獲取“信號”,並負責創建“邏輯對象”並與之配合使用。
我將在GUI外部實例化Logic類,但將其作為參數傳遞給GUI構造函數。 它幾乎等同於您已經在做的事情,但是我認為它使GUI使用Logic對象更加清楚。 另外,在GUI啟動/關閉之前/之后,Logic可能還會做一些其他事情; 現在可能不是這種情況,但是如果您擴展程序,將來可能會如此。
許多其他答案告訴您要查看MVC,但這可能對您的項目而言過於矯kill過正。 對於大型項目,它可以降低復雜性,而對於小型項目,則可以增加復雜性。
編輯:
Logic login = new Logic();
...
MyGUI gui = new MyGUI(logic);
...
您可以在主對象中創建Logic類型的on對象,並將該對象的引用存儲在Window對象中-這樣,只要窗口存在,就可以訪問Logic對象。
對於這種瑣碎的場景,您應該查找Singleton設計模式 。
默認情況下,Java使用引用變量。 因此,如果在GUI類中實例化對象,請確保通過方法調用將對象發送到處理類。
另外,您可以查看單例類,該類將僅返回該類的一個實例。 在該類中,實例化全局所需的所有對象,然后在整個程序中重新使用該實例。
通常您可以。 如果您的應用程序很簡單。
但是這種方法是不可擴展的。 隨着您的應用程序變得越來越復雜,開發和支持變得越來越困難。 嘗試考慮“ 模型-視圖-控制器”模式來定義最佳設計方式。 (根據您的昵稱,我將冒險提出其他鏈接 )
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.