本文從jdk內(nèi)置的觀察者模式來(lái)介紹觀察者模式。
業(yè)務(wù)場(chǎng)景:當(dāng)老師進(jìn)門(mén)的時(shí)候,班長(zhǎng)帶頭叫“老師好”,然后全班同學(xué)一起交“老師好”
因?yàn)樘?jiǎn)單,直接上代碼
班長(zhǎng)繼承自O(shè)bservable
package Observer; import java.util.Observable; import java.util.Observer; public class Monitor extends Observable{ public Monitor() { super(); } @Override public synchronized void addObserver(Observer o) { super.addObserver(o); } @Override public synchronized void deleteObserver(Observer o) { super.deleteObserver(o); } @Override public void notifyObservers() { super.notifyObservers(); } @Override public void notifyObservers(Object arg) { super.notifyObservers(arg); } @Override public synchronized void deleteObservers() { super.deleteObservers(); } @Override protected synchronized void setChanged() { super.setChanged(); } @Override protected synchronized void clearChanged() { super.clearChanged(); } @Override public synchronized boolean hasChanged() { return super.hasChanged(); } @Override public synchronized int countObservers() { return super.countObservers(); } }
學(xué)生繼承自O(shè)bserver
package Observer; import java.util.Observable; import java.util.Observer; /** * 觀察者 */ public class Student implements Observer{ String name; public Student() { } public Student(String name) { this.name = name; } @Override public void update(Observable o, Object arg) { System.out.println("學(xué)生" + this.name + "說(shuō)老師好"); } }
測(cè)試類:
package Observer; public class Maintest { public static void main(String[] args) { Monitor monitor = new Monitor(); Student student1 = new Student("小明"); monitor.addObserver(student1); Student student2 = new Student("小藍(lán)"); monitor.addObserver(student2); Student student3 = new Student("小白"); monitor.addObserver(student3); // 只有設(shè)置了這個(gè)值才進(jìn)行通知 monitor.setChanged(); // 班長(zhǎng)通知所有學(xué)生老師來(lái)了,起立 monitor.notifyObservers(); } }
結(jié)果:
學(xué)生小白說(shuō)老師好 學(xué)生小藍(lán)說(shuō)老師好 學(xué)生小明說(shuō)老師好
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/75027.html
摘要:我們今天也來(lái)做一個(gè)萬(wàn)能遙控器設(shè)計(jì)模式適配器模式將一個(gè)類的接口轉(zhuǎn)換成客戶希望的另外一個(gè)接口。今天要介紹的仍然是創(chuàng)建型設(shè)計(jì)模式的一種建造者模式。設(shè)計(jì)模式的理論知識(shí)固然重要,但 計(jì)算機(jī)程序的思維邏輯 (54) - 剖析 Collections - 設(shè)計(jì)模式 上節(jié)我們提到,類 Collections 中大概有兩類功能,第一類是對(duì)容器接口對(duì)象進(jìn)行操作,第二類是返回一個(gè)容器接口對(duì)象,上節(jié)我們介紹了...
摘要:我們今天也來(lái)做一個(gè)萬(wàn)能遙控器設(shè)計(jì)模式適配器模式將一個(gè)類的接口轉(zhuǎn)換成客戶希望的另外一個(gè)接口。今天要介紹的仍然是創(chuàng)建型設(shè)計(jì)模式的一種建造者模式。設(shè)計(jì)模式的理論知識(shí)固然重要,但 計(jì)算機(jī)程序的思維邏輯 (54) - 剖析 Collections - 設(shè)計(jì)模式 上節(jié)我們提到,類 Collections 中大概有兩類功能,第一類是對(duì)容器接口對(duì)象進(jìn)行操作,第二類是返回一個(gè)容器接口對(duì)象,上節(jié)我們介紹了...
摘要:觀察者模式定義設(shè)計(jì)模式中對(duì)的定義一個(gè)對(duì)象稱為維持一系列依賴于它觀察者的對(duì)象,將有關(guān)狀態(tài)的任何變更自動(dòng)通知給它們。如圖模式比較觀察者模式則多了一個(gè)類似于話題調(diào)度中心的流程,發(fā)布者和訂閱者解耦。 Obeserver(觀察者)模式 定義 《js設(shè)計(jì)模式》中對(duì)Observer的定義:一個(gè)對(duì)象(稱為subject)維持一系列依賴于它(觀察者)的對(duì)象,將有關(guān)狀態(tài)的任何變更自動(dòng)通知給它們。 《設(shè)計(jì)模...
摘要:添加獲取長(zhǎng)度獲取下標(biāo)通知首先我們聲明一個(gè)主體類,里面包含一個(gè)觀察者數(shù)組,還有一些操作方法。觀察者通用聲明一個(gè)更新接口,用來(lái)獲取主體分發(fā)的通知。主體分發(fā)消息給觀察者。 觀察者模式 The Observer is a design pattern where an object (known as a subject) maintains a list of objects dependi...
閱讀 1629·2021-10-25 09:44
閱讀 3011·2021-09-04 16:48
閱讀 1699·2019-08-30 15:44
閱讀 2573·2019-08-30 15:44
閱讀 1789·2019-08-30 15:44
閱讀 2894·2019-08-30 14:14
閱讀 3025·2019-08-30 13:00
閱讀 2224·2019-08-30 11:09