日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

设计模式-行为型模式-观察者模式

發布時間:2024/4/15 asp.net 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 设计模式-行为型模式-观察者模式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

觀察者模式

觀察者模式有時也被稱為發布/訂閱模式,該模式定義了一種一對多的依賴關系,可以讓多個觀察者對象同時監聽某一個主題對象,當主題對象的狀態發生變化時,通知所有觀察者對象,使它們能夠自動更新自己。例如某個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

總結

以上是生活随笔為你收集整理的设计模式-行为型模式-观察者模式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。