免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
18. 觀察者模式
一. 概念
Observer(觀察者模式):定義對(duì)象間的一種一對(duì)多的依賴關(guān)系,以便當(dāng)一個(gè)對(duì)象的狀態(tài)發(fā)生改變時(shí),所有依賴于它的對(duì)象都得到通知并自動(dòng)刷新。

二. 角色
抽象主題(Subject)角色:主題角色把所有對(duì)觀察者對(duì)象的引用保存在一個(gè)聚集里,每個(gè)主題都可以有任何數(shù)量的觀察者。
抽象觀察者(Observer)角色:為所有的具體觀察者定義一個(gè)接口,在得到主題的通知時(shí)更新自己。
具體主題(ConcreteSubject)角色:將有關(guān)狀態(tài)存入具體觀察者對(duì)象,在具體主題的內(nèi)部狀態(tài)改變時(shí),給所有登記過的觀察者發(fā)出通知。
具體觀察者(ConcreteObserver)角色:存儲(chǔ)與主題的狀態(tài)自恰的狀態(tài)。

三. 實(shí)現(xiàn)
由于java提供了觀察者模式的實(shí)現(xiàn),這里就直接使用java的Api來實(shí)現(xiàn),這里模擬家長對(duì)孩子下達(dá)命令。

Test.java
public class Test {
public static void main(String[] args) {
Mother m = new Mother();
Children c1 = new Children(m);
Children c2 = new Children(m);
m.setInfo("死孩子,回家吃飯!");
m.setInfo("快去寫作業(yè)!");
m.setInfo("快去寫作業(yè)!");
m.setInfo("快去睡覺 !");
}
}
這里Mother是具體主題角色,Children是具體觀察者角色。

Children.java
public class Children implements Observer {

public Children(Mother m){
m.addObserver(this);
}
@Override
public void update(Observable o, Object arg) {
String info = ((Mother)o).getInfo();
System.out.println("已經(jīng)收到命令:" + info);
}

}
實(shí)現(xiàn)了Observer接口,是具體觀察者角色。

Mother.java
public class Mother extends Observable {
private String info = "";

public String getInfo() {
return info;
}

public void setInfo(String info) {
if(!this.info.equals(info)){
this.info = info;
setChanged();
}
notifyObservers();
}
}
繼承了Observalbe類,是具體主題角色。
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
觀察者模式組圖(Observer Pattern)
這就是觀察者模式
觀察者模式.
java設(shè)計(jì)模式———觀察者模式
結(jié)合JDK源碼看設(shè)計(jì)模式——觀察者模式
設(shè)計(jì)模式之觀察者模式
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服