生活随笔
收集整理的這篇文章主要介紹了
观察者模式(一)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.觀察者定義了一種一對多依賴關系,讓多個觀察者同時監聽某個主題對象。這個主題對象在狀態上發生變化時,會通知所有的觀者對象,讓他們自動更新自己。----這里的主題對象就是被觀察者
?
2.代碼模擬
?
?? 抽象主題角色AbstractWatched.java
???public interface AbstractWatched {
Java代碼? ?
????public?void?addWatcher(AbstractWatcher?watcher);?? ?????? ????public?void?removeWatcher(AbstractWatcher?watcher);?? ?????? ????public?void?removeAll();?? ?????? ????public?void?fire();?? }?? ?? ? ?具體主題角色ConcreteWatched.java
???public class ConcreteWatched implements AbstractWatched {
Java代碼? ?
private?List<AbstractWatcher>?watchers?=?new?ArrayList<AbstractWatcher>();?? ?? @Override?? public?void?addWatcher(AbstractWatcher?watcher)?{?? ????watchers.add(watcher);?? }?? ?? @Override?? public?void?removeAll()?{?? ????watchers.clear();?? }?? ?? @Override?? public?void?removeWatcher(AbstractWatcher?watcher)?{?? ????watchers.remove(watcher);?? }?? ?? @Override?? public?void?fire()?{?? ?????? ????for(AbstractWatcher?watcher?:?watchers){?? ????????watcher.update();?? ????}?? }?? ?
?? 抽象觀察者角色
???public interface AbstractWatcher {
Java代碼? ?
public?void?update();?? ??? ???
?
?? 具體觀者角色
?
Java代碼? ?
public?class?ConcreteWatcher?implements?AbstractWatcher?{?? ?? ????@Override?? ????public?void?update()?{?? ????????System.out.println("update.....");?? ????}?? ?? }?? ?
??測試代碼:
?
Java代碼? ?
public?static?void?main(String[]?args)?{?? ????//被觀察者?? ????AbstractWatched?watched?=?new?ConcreteWatched();?? ?????? ????AbstractWatcher?watcher1?=?new?ConcreteWatcher();?? ????AbstractWatcher?watcher2?=?new?ConcreteWatcher();?? ????AbstractWatcher?watcher3?=?new?ConcreteWatcher();?? ?????? ????watched.addWatcher(watcher1);?? ????watched.addWatcher(watcher2);?? ????watched.addWatcher(watcher3);?? ?????? ????watched.fire();?? } ?
轉載于:https://my.oschina.net/wdkxyd/blog/160415
總結
以上是生活随笔為你收集整理的观察者模式(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。