设计模式-行为型模式-观察者模式
生活随笔
收集整理的這篇文章主要介紹了
设计模式-行为型模式-观察者模式
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
觀察者模式
觀察者模式有時也被稱為發布/訂閱模式,該模式定義了一種一對多的依賴關系,可以讓多個觀察者對象同時監聽某一個主題對象,當主題對象的狀態發生變化時,通知所有觀察者對象,使它們能夠自動更新自己。例如某個Text文本框的text屬性綁定到X數據源上,當X數據源發生更改時自動同步更新Text的值。被觀察者要維護一個觀察者的List,逐個通知可能存在性能的問題(比如List很長,或者update的邏輯耗時等)。
?
//觀察者接口public interface IWatcher {public void update(String str); } //被觀察者接口
public interface IWatched {public void addWatcher(IWatcher watcher);public void removeWatcher(IWatcher watcher);public void notifyWatchers(String str); } //具體的觀察者
public class ConcreteWatcher implements IWatcher {@Overridepublic void update(String str) {System.out.println(str);} } //具體的被觀察者
public class ConcreteWatched implements IWatched {private List<IWatcher> watchers = new ArrayList<>();@Overridepublic void addWatcher(IWatcher watcher) {watchers.add(watcher);}@Overridepublic void removeWatcher(IWatcher watcher) {watchers.remove(watcher);}@Overridepublic void notifyWatchers(String str) {
// 通知觀察者
for (IWatcher iWatcher : watchers) {iWatcher.update(str);}} } package ObserverPattern;public class Main {public static void executeObserverPattern() {System.out.println("Observer Pattern:");IWatched watched = new ConcreteWatched();IWatcher watcher1 = new ConcreteWatcher();IWatcher watcher2 = new ConcreteWatcher();ConcreteWatcher watcher3 = new ConcreteWatcher();watched.addWatcher(watcher1);watched.addWatcher(watcher2);watched.addWatcher(watcher3);watched.notifyWatchers("Hello World!!!");} }
?
轉載于:https://www.cnblogs.com/chenyongblog/p/5202165.html
總結
以上是生活随笔為你收集整理的设计模式-行为型模式-观察者模式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PHP写的一个轻量级的DI容器类(转)
- 下一篇: session喜欢丢值且占内存,Cook