2013-05-15 19 views
0

我想爲我的應用程序實現觀察者模式。由於我的代碼很大,我將對這個問題進行總結。 因此,我必須製作一個管理老闆和一些員工之間關係的應用程序。 爲此,我爲老闆和員工都有兩個獨立的gui。爲我的應用程序實現觀察者模式的解決方案

當我在申請午餐時,我創建了兩個loggins,一個給老闆,一個給員工。如果老闆的登錄成功,那麼它將創建一個新的Gui Boss框架

如果員工登錄成功,則會顯示新的Gui員工。我想要做的是爲新創建的Gui員工(可觀察到)添加一個觀察員(Gui Boss)。 下面是我的一些代碼,以更好地解釋:

//in Application.java 
public static void main(String args[]){ 
    ........ 
    LoginBoss lb = new LoginBoss(contrb); //contrb is boss controller 
    lb.setVisible(true); 
    LoginEmployee le = new LoginEmployee(contre); //contre is employee controller 
    le.setVisible(true); 
} 

//In LogginBoss.java 
//after i check if it's ok i create a new gui boss 
guiB = new GuiBoss(contrb,boss); //contrb is boss controller passed from loggin boss 
guiB.setVisible(true); 

//In LogginEmployee.java 
///after i check if it's ok i create a new gui employee 
guiE = new GuiEmployee(contre,employee); 
guiE.setVisible(true); 
//now i whant to add for guiE an Gui Boss observer, something like guiE.addObserver(guiB); 

如果您有任何ideeas請讓我know.I'm對不起我的英語。

+0

也是這個[答](http://stackoverflow.com/a/3072979/230513)。 – trashgod

+0

用戶界面(視圖)不應該是可觀察的,而應顯示數據(模型)。所以如果員工的數據發生變化,老闆的用戶界面就會得到通知。您可能希望重新考慮您的設計,並可能暗示一些角色概念(老闆,員工),併爲每個目的只使用一個用戶界面。一個簡單的角色概念可以通過繼承實現 - >'Boss extends Employee' +對於View和Model以及覆蓋功能應該擴展的方法。 – A4L

回答

0

看看這link

如果GuiEmployee擴展了觀察者模式,你應該是這樣的:

GuiEmployee watched = new GuiEmployee(var, var); 

watched.addObserver(guiB); 

watched.changeSomeValue(value); 

changeSomeValue方法,裏面GuiEmployee(watched在我的例子),你必須包括這些句子通知觀察員:

setChanged(); 
notifyObservers(value); 

調用notifyObservers將不會執行任何操作,直到調用setChanged爲止。欲瞭解更多信息,請看here

+0

是的,但我不能做watched.addObserver(guiB),因爲guiB不在同一個文件中,我在這裏做了GuiEmployee watched = new GuiEmployee(var,var)。我想要的是,guiB是我在LogginBoss.java創建的。 – user2271933

+0

您爲什麼不簡單在GuiBoss內部創建GuiEmployee?這樣你就可以隨心所欲地觀看/ guiB實例。另一種選擇是在GuiBoss中創建一個「setGuiE(GuiEmployee g)」方法。 –

相關問題