觀察者模式 觸發(fā)聯(lián)動
當一個抽象模型有兩個方面,其中一個方面的操作依賴于另一個方面的狀態(tài)變化
如果在更改一個對象的時候,需要同時連帶改變其他的對象,而且不知道究竟應(yīng)該 有多少對象需要被連帶改變
當一個對象必須通知其他的對象,但是你又希望這個對象和其他的被通知的對象是松散耦合的
當一個抽象模型有兩個方面,其中一個方面的操作依賴于另一個方面的狀態(tài)變化
如果在更改一個對象的時候,需要同時連帶改變其他的對象,而且不知道究竟應(yīng)該 有多少對象需要被連帶改變
當一個對象必須通知其他的對象,但是你又希望這個對象和其他的被通知的對象是松散耦合的
2016-10-28
this.notifyObserver() 和this.notifyObserver(Object objec) 方法應(yīng)該測試一下,看看之間有無調(diào)用關(guān)系
2016-10-28
推模式,是假定目標對象知道觀察者需要的數(shù)據(jù)! 所以發(fā)送數(shù)據(jù)!
而;拉模型,只是傳一個引用,引用中g(shù)et 的數(shù)據(jù)屬性假如有很多的話! 不同的觀察者,需要的數(shù)據(jù)不同,用引用來,調(diào)取數(shù)據(jù),這樣比較靈活!
而;拉模型,只是傳一個引用,引用中g(shù)et 的數(shù)據(jù)屬性假如有很多的話! 不同的觀察者,需要的數(shù)據(jù)不同,用引用來,調(diào)取數(shù)據(jù),這樣比較靈活!
2016-10-27
其實核心就是那個set方法,set方法改變了自己(觀察者)的值的同時,也修改了多個對象(被觀察者)的值,從而保持了一個對象的值改變時所有“依賴于”它的對象都得到了通知
public setXXX(Object XXX){
//自己改變
this.XXX=XXX;
//通知其他對象
notify(xxx);
}
public setXXX(Object XXX){
//自己改變
this.XXX=XXX;
//通知其他對象
notify(xxx);
}
2016-10-13
說的太復(fù)雜了,感覺沒有把觀察者模式的本質(zhì)講解明白。至于推模型和拉模型的區(qū)別,解釋的也比較生硬。其實在傳統(tǒng)的觀察者模式中,全都屬于推模式。拉模式應(yīng)該是在觀察者一段存在一個輪訓,然后每隔一段時間就向觀察對象回調(diào)一次數(shù)據(jù)。有變化就更新自己的狀態(tài),沒有變化就繼續(xù)輪訓。
2016-10-12