-
觀察者的優(yōu)缺點: (1)觀察者模式實現(xiàn)了觀察者和目標之間的抽象耦合。原本目標對象在狀態(tài)發(fā)生改變的時候需要直接調(diào)用所有的觀察者對象,但是抽象出觀察者接口以后,目標和觀察者就只是在抽象上耦合了,也就是說目標只知道觀察者的接口,不知道具體的觀察者的類,從而實現(xiàn)了目標類和具體觀察者類之間的解耦。 (2)觀察者模式實現(xiàn)了動態(tài)聯(lián)動(做一個操作會引起其他相關的操作)由于觀察者模式對觀察者進行注冊管理,就可以在運行期間通過動態(tài)的控制注冊的觀察者來控制某個動作的聯(lián)動范圍。 (3)觀察者模式支持廣播通信。 缺點: (1)可能會引起無謂的操作。查看全部
-
notifyObservers 這個方法有兩種形式,當使用帶參數(shù)的類型時就屬于推模式,僅僅傳入信息,當用無參的方法時,其實是將對象的引用傳給觀察者的update方法來進行操作,這兩種方式只能用一個。查看全部
-
我么可以使用java中自帶的觀察者模式實現(xiàn)觀察者模式,在java.util包中有一個Observable類,他實現(xiàn)了大部分我們需要的目標的功能,還有一個接口Observer,定義了update()方法。 (1)不需要再定義觀察者和目標的接口了,JDK幫忙定義了。 (2)具體目標的實現(xiàn)里面不需要在維護的注冊信息了,這個在java中的Observable類里面已經(jīng)幫忙實現(xiàn)好了。 (3)觸發(fā)通知的方式有一點變化,首先要強調(diào)使用setChanged方法這個是java為了幫助實現(xiàn)更精確的觸發(fā)控制而提供的功能。 (4)具體的觀察者實現(xiàn)里面,update方法其實能同時支持推模型和拉模型,這個是java在定義的時候已經(jīng)考慮進去了。查看全部
-
1,推模型:假定目標知道觀察者需要的數(shù)據(jù)。使觀察者難以復用,需要重新實現(xiàn)update方法。 2,拉模型:不知道觀察者具體需要什么數(shù)據(jù),因此把自身傳遞給觀察者,由觀察者來取值, update方法的參數(shù)是目標對象本身,基本可以適應各種情況的需要。查看全部
-
觀察者模式中的推模型和拉模型: 1,推模型:目標對象主動向觀察者推送目標的詳細信息,不管觀察者是否需要,推送的信息通常是目標對象的全部或部分數(shù)據(jù)。相當于是在廣播通信。 2,拉模型:目標對象再通知觀察者時,值傳遞少量信息,如果觀察者需要具體的信息,由觀察者主動到目標對象中獲取,相當于是觀察者從目標對象中拉數(shù)據(jù)。一般這種模型的實現(xiàn)中會把目標對象自身通過update方法傳遞給觀察者。這樣就可以通過這個引用獲取。查看全部
-
5,觀察者模式的調(diào)用順序示意圖:查看全部
-
1,一個觀察者可以關注多個目標 2,觀察者模式中,觀察者和目標是單向依賴,只有觀察者依賴目標不是目標依賴觀察者主動權(quán)掌握在目標的手中只有目標知道什么時候通知觀察者,整個過程中觀察者始終是被動的。 3,命名建議:觀察者模式又稱為“發(fā)布訂閱模式” (1)目標接口的定義建議在名稱后面跟上Subject。 (2)觀察者接口的定義,建議在名稱后面跟Observer。 (3)觀察者接口更新的方法建議名稱為update。 4,觸發(fā)通知的時機: (1)一般是在完成狀態(tài)維護后觸發(fā)因為通知會傳遞數(shù)據(jù),先通知后改數(shù)據(jù)會導致觀察者和對象的狀態(tài)不一致。查看全部
-
認識觀察者的六大方面: 1,目標與觀察者之間的關系 2,單項依賴 3,命名建議 4,觸發(fā)通知的時期 5,觀察者模式的調(diào)用順序示意圖 6,通知的順序。查看全部
-
定義觀察者模式的四個步驟:查看全部
-
觀察者模式:定義對象間的一種一對多的依賴關系。當對象的狀態(tài)發(fā)生改變時,所有依賴于它的對象都得到通知并被自動更新。 一對多模式:一個目標可以有任意多個觀察者對象,一旦目標的狀態(tài)發(fā)生改變,目標的所有觀察者都會做出相對應的響應查看全部
-
命名建議查看全部
-
觀察者模式的結(jié)構(gòu)查看全部
-
觀察模式的好處:統(tǒng)一通知,各自處理;查看全部
-
...查看全部
-
1.當一個抽象模型有兩個方面,其中一個方面的操作依賴于另一個方面的狀態(tài)變化時 2.如果在封蓋一個對象的時候,需要同時連帶改變其他的對象,而且不知道究竟應該有對少對象需要被連帶改變 3.當一個對象必須通知其他的對象,但是你又希望這個對象和其他被他通知的對象是松散耦合的查看全部
舉報
0/150
提交
取消