2011-10-06 40 views
0

我正在開發一個類,它將事件關聯到觀察者,但在這種情況下,觀察者能夠使用參數中接收的參數來更改對象內的值。可以更改值的觀察者名稱?

觀察者是那些「觀察者」的正確名稱?我只是在尋找正確的名稱把那個(如果已經有這種情況下的模式,將是巨大的)

編輯:下面是一個例子

A是可觀察到的對象

B是觀察者

一個具有由一個int代表的財產,和B的功能是保證財產,它總是在50以上

所以當火災事件到B將被稱爲類似於:

void BObserverMethod(Action action, A a) 
{ 
    if(a.property =< 50) 
     a.property = 50; 
} 

現在的問題是:我可以叫什麼B?當他不僅僅是觀察時稱它爲觀察者是正確的嗎?

+0

Corrupted observer?可能有點像NewsCorp? – StuartLC

+0

'使用參數中接收到的參數來更改對象內部的值......您引用哪個對象,觀察者對象,獲取的對象或參數對象? – tcarvin

+0

你可以添加整個代碼嗎? –

回答

1

觀察者模式實際上只是解決了其中多個觀察員,可在主題變化更新的解耦方法。模式中沒有任何內容阻止觀察者通過在主題中設置某個值來響應更新。

但是,常識表明觀察者必須小心修改主體的可觀察特性;兩個或兩個以上的觀察員可以很容易地進行一輪一輪的更新。如果兩個意圖相反的觀察者都修改了相同的屬性,則可能很容易發現自己處於無限循環中:

void BObserverMethod(Action action, A a) 
{ 
    if(a.property =< 50) 
     a.property = 50; 
} 

void CObserverMethod(Action action, A a) 
{ 
    if(a.property >= 50) 
     a.property = 35; 
} 
相關問題