-
觀察者模式總結----(二) /** * 觀察者的具體實現---天氣預報 */ public class WeatherSubject extends Subject { private String weatherState; //當前天氣狀態 public String getWeatherState() { return weatherState; } /** * 當天氣的狀態發生改變的時候,要通知到所有的觀察者 * @param weatherState */ public void setWeatherState(String weatherState) { this.weatherState = weatherState; notifyAllObserver(weatherState);//調用父類的方法,通知所有的觀察者。告知其天氣狀態 } } /** * 觀察者,有update接口,用來接受目標類的通知 */ public interface Observer { /** * @param obj 目標類 調用(通知) 觀察者對象該方法時,傳入的通知內容 */ void update(Object obj); } 測試 WeatherSubject subject=new WeatherSubject(); //創建天氣目標對象 subject.attach(new Observer() { public void update(Object obj) { System.out.println("我是觀察者A,天氣為"+obj); } }); //增添觀察者 subject.attach(new Observer() { public void update(Object obj) { System.out.println("我是觀察者B,天氣為"+obj); } }); System.out.println("通知前。。。。"); subject.setWeatherState("晴天"); System.out.println("通知后。。。。");查看全部
-
觀察者模式總結-----(一) /** * 觀察者模式: 一個目標類,多個觀察者(用來觀察目標)。 * 當目標類發生變化時,可以通知到他的所有觀察者。 * * 原理:利用回掉函數機制。 所有“觀察者類”繼承一個“接口”(如Observer),該接口中有一個 * 方法(如,update())。將所有的觀察者增添到“目標類”的“鏈表”中,當目標類的狀態發生改變時, * 目標類可以遍歷鏈表中的所有觀察者,調用其update通知到所有的觀察者。 * * 案例描述:有一個 天氣預報(目標) 類,許多觀察者類(如,網站,人等)需要第一時間得知天氣的變化, * 然后做各自的處理。 */ /** * 目標類,用來增,刪觀察者,通知觀察者 */ public class Subject { private List<Observer> observerList=new ArrayList<>();//存儲觀察該目標的觀察者 /** * 增添一個觀察者 * @param observer 要增添的觀察者 */ public void attach(Observer observer) { observerList.add(observer); } /** * 刪除一個觀察者 * @param observer 要刪除的觀察者 */ public void detach(Observer observer) { observerList.remove(observer); } /** * 通知所有的觀察者 * @param obj 要通知的信息 */ public void notifyAllObserver(Object obj) { for(Observer observer: observerList) { observer.update(obj);//遍歷所有的觀察者,依次調用其update方法。 } } }查看全部
-
觀察者實現模式的兩種方式,推模式和拉模式。查看全部
-
觀察者模式,要通過java的observer類。觀察者,你要先創建一個觀察者和被觀察者。查看全部
-
觀察者模式的定義 定義對象間的一種一對多的依賴關系。當一個對象的狀態發生改變時,所有依賴于它的對象都得到通知并自動更新。查看全部
-
觀察者模式流程查看全部
-
觀察者模式的定義 定義對象間的一種一對多的依賴關系。當一個對象的狀態發生改變時,所有依賴于它的對象都得到通知并自動更新。查看全部
-
觀察者模式應用場景查看全部
-
模式的秘密---觀察者模式——利用Java提供的觀察者實現 Java 實現 VS 自己實現的對比四點: (1)不需要再定義觀察者和目標接口(JDK已經定義)。 (2)具體的目標實現里面不需要再維護觀察者的注冊信息,Java中的Observable類里面已經實現。 (3)觸發通知的方式有一點變化,要先調用setChanged方法,這個是Java為了幫助實現更精確的觸發控制而提供的功能。 (4)具體觀察者的實現里面,update方法其實能同時支持推模型和拉模型,這個Java在定義的時候,已經考慮。查看全部
-
命名建議查看全部
-
官方定義查看全部
-
需求總結查看全部
-
3查看全部
-
2查看全部
-
111查看全部
舉報
0/150
提交
取消