2012-01-12 39 views
0

我有一個帶有按鈕和文本框菜單的GUI類。根據菜單和輸入中做出的選擇,GUI類中的方法是調用Logic類中的方法來發送輸入並創建Customer類和Account類的新對象等。關於Java中面向對象的一些問題

爲了能夠在GUI類和邏輯類之間進行通信,我首先創建了一個邏輯類的對象,然後在GUI類中執行它,因爲它在這裏,我有我的主要方法。這是做這件事的最好方法嗎?在GUI類和Logic類之間是否需要某種引用變量,或者在GUI類的開頭創建對象時是否需要引用?我想能夠和一個班級溝通,它一定是一個對象!謝謝!

Logic logic = new Logic(); 

logic.addCustomer(name, number); 

回答

1

我會在GUI外實例化Logic類,但將它作爲參數傳遞給GUI構造函數。它幾乎與您已經在做的事情相同,但我認爲它更清楚地表明GUI使用了一個Logic對象。另外,在GUI開始/關閉之前/之後,Logic可能會做其他一些事情;現在可能並非如此,但如果您延長程序,將來可能會出現這種情況。

許多其他答案告訴你看看MVC,但這可能是你的項目矯枉過正。它可以降低一個大型項目的複雜度,但增加一個小型項目的複雜度。

編輯:

Logic login = new Logic(); 
... 
MyGUI gui = new MyGUI(logic); 
... 
+0

但是我如何在GUI外實例化Logic類? – 2012-01-12 16:46:45

+0

看到我的新編輯。 – toto2 2012-01-12 17:30:13

0

你可以在你的主要類型的邏輯對象創建並存儲在你的窗口對象的對象的引用 - 這樣只要在窗口存在,你可以訪問你的邏輯對象。

0

默認情況下,Java使用引用變量。因此,如果您在GUI類中實例化對象,請確保通過方法調用將對象發送到您的處理類。

或者,您可以查看單例類,它將只返回類的一個實例。在該類中,實例化全局所需的所有對象,並在整個程序中重新使用該實例。

2

理想情況下,您不應該直接創建邏輯類。 您應該將功能分解成若干小類,每個小類都會承擔責任。

一個簡單的方法是讓GUI類創建偵聽用戶事件的偵聽器。作爲對使用事件的迴應,它們會觸發您的邏輯爲自己註冊的事件。然後當收到事件時,邏輯類可以執行該功能。 你應該閱讀關於觀察者模式,事件驅動設計......

你可以在這裏閱讀關於事件驅動的編程http://en.wikipedia.org/wiki/Event-driven_programming

+0

嗨,我有在GUI類的監聽器。由於這是我必須接受的一項任務,因此需要創建一個邏輯類,我認爲這是在GUI類中創建邏輯對象的最佳方法。或者如何做到這一點? – 2012-01-12 16:18:16

+0

接收事件的類應創建邏輯類。您可以將事件處理程序視爲控制器。這樣你的邏輯類就可以解耦並且可以獨立使用;那麼你的GUI也不會直接依賴te邏輯類。 – Scorpion 2012-01-12 16:26:23

+0

嗯,如果GUI類中的事件是從JtextField發送名稱到創建新的Customer對象的方法。我想創建cuctomer對象的最好方法是在邏輯中,但爲了能夠做到這一點,我必須在某個地方創建一個邏輯對象。如果不在具有主要方法的GUI類中,我應該在哪裏以及如何執行此操作?困惑和崇拜都有幫助!謝謝! – 2012-01-12 16:33:39

0

一般你可以。如果你的應用程序非常簡單。

但是這種方法不可擴展。隨着應用程序變得越來越複雜,開發和支持變得越來越困難。嘗試考慮Model–view–controller模式來爲您的設計定義最佳方式。 (根據你的暱稱我會冒險建議 an alternative link

+0

錯誤的語言! :) – 2012-01-12 16:20:06

+0

沒關係:)兩個鏈接都是一樣的東西:) – andrey 2012-01-12 16:24:10

1

我建議你在MVC architecture上做一些研究。您的GUI(視圖)不應該直接與您的模型(邏輯)進行交互。實現一個控制器,可以從您的視圖中獲取「信號」,並負責創建您的「邏輯對象」並與之協作。