軟件體系結(jié)構(gòu)與設(shè)計(jì)模式觀察者模式實(shí)驗(yàn)-創(chuàng)新互聯(lián)

需求:主體有兩種事件,觀察者可以任意關(guān)注其中的某個(gè)事件或全部事件,當(dāng)主體事件發(fā)生,通知對(duì)應(yīng)的觀察者。

創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于網(wǎng)站設(shè)計(jì)制作、成都做網(wǎng)站、北碚網(wǎng)絡(luò)推廣、小程序定制開發(fā)、北碚網(wǎng)絡(luò)營(yíng)銷、北碚企業(yè)策劃、北碚品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們大的嘉獎(jiǎng);創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供北碚建站搭建服務(wù),24小時(shí)服務(wù)熱線:13518219792,官方網(wǎng)址:muchs.cn

例如:主體是商場(chǎng),有新貨上架和降價(jià)兩種事件,消費(fèi)者可以關(guān)注其中的一種或全部事件,當(dāng)降價(jià)了,可以通知所有關(guān)注降價(jià)的消費(fèi)者。

目錄:

主體:

import java.util.ArrayList;

import java.util.List;

public abstract class Observable {

private Listlistone=new ArrayList();

private Listlisttwo =new ArrayList();

public void attachone(Observer observer) {

?? listone.add(observer);

?? System.out.println("添加一個(gè)上架觀察者");

}

public void detachone(Observer observer) {

?? listone.remove(observer);

}

public void nodifyObserversone(String newState) {

?? for(Observer observer:listone) {

????????????? observer.updateone(newState);

?? }

}

public void attachtwo(Observer observer) {

?? listtwo.add(observer);

?? System.out.println("添加一個(gè)降價(jià)觀察者");

}

public void detachtwo(Observer observer) {

?? listtwo.remove(observer);

}

public void nodifyObserverstwo(String newState) {

?? for(Observer observer:listtwo) {

?????????

????????? observer.updatetwo(newState);

?? }

}

}

具體主體:

public class Market extends Observable{

private String putawaystate;

private String depreciatestate;

public String getPutawayState() {

return putawaystate;

}

public String getDepreciateState() {

return depreciatestate;

}

public void changeputawaystate(String newState) {

putawaystate =newState;

System.out.println("發(fā)布主題狀態(tài):"+putawaystate);

this.nodifyObserversone(putawaystate);

}

public void changedepreciatestate(String newState) {

depreciatestate =newState;

System.out.println("發(fā)布主題狀態(tài):"+depreciatestate);

this.nodifyObserverstwo(depreciatestate);

}

}

觀察者:

public abstract class Observer {

private String name;

public Observer(String name) {

this.name=name;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name=name;

}

public abstract void updateone(String state);

public abstract void updatetwo(String state);

}

具體觀察者:

public class Consumer extends Observer{

public Consumer(String name) {

super(name);

}

private String putawaystate;

private String depreciatestate;

public void updateone(String state) {

putawaystate =state;

System.out.println(super.getName()+"狀態(tài)為:"+putawaystate);

}

public void updatetwo(String state) {

depreciatestate =state;

System.out.println(super.getName()+"狀態(tài)為:"+depreciatestate);

}

}

客戶端:

public class Client {

public static void main(String[] args) {

Market market = new Market();

Observer observerthree =new Consumer("1");

market.attachone(observerthree);

market.attachtwo(observerthree);

market.changeputawaystate("商品B上架");

market.changedepreciatestate("商品B降價(jià)");

System.out.println("~~~~~~~~~~~");

Observer observerone =new Consumer("2");

market.attachone(observerone);

market.changeputawaystate("商品A上架");

System.out.println("~~~~~~~~~~~");

Observer observertwo =new Consumer("3");

market.attachtwo(observertwo);

market.changedepreciatestate("商品A降價(jià)");

System.out.println("~~~~~~~~~~~");

}

}

實(shí)驗(yàn)結(jié)果:

類圖:

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購,新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧

分享題目:軟件體系結(jié)構(gòu)與設(shè)計(jì)模式觀察者模式實(shí)驗(yàn)-創(chuàng)新互聯(lián)
URL地址:http://muchs.cn/article20/dejjjo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站關(guān)鍵詞優(yōu)化、域名注冊(cè)、標(biāo)簽優(yōu)化、響應(yīng)式網(wǎng)站、小程序開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)