第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

Java系列:設(shè)計(jì)模式之觀察者模式

標(biāo)簽:
Java

一、简介
观察者模式(Observer)完美的将观察者和被观察的对象分离开。举个例子,用户界面可以作为一个观察者,业务数据是被观察者,用户界面观察业务数据的变化,发现数据变化后,就显示在界面上。面向对象设计的一个原则是:系统中的每个类将重点放在某一个功能上,而不是其他方面。一个对象只做一件事情,并且将他做好。观察者模式在模块之间划定了清晰的界限,提高了应用程序的可维护性和重用性。
观察者设计模式定义了对象间的一种一对多的组合关系,以便一个对象的状态发生变化时,所有依赖于它的对象都得到通知并自动刷新。
二、代码实例

package weather;

import java.util.ArrayList;
import java.util.List;

public class WeatherSubject {
    private List<Observer> observers=new ArrayList<Observer>();
    //把订阅天气的人添加到订阅者列表中
    public void attach(Observer observer){
        observers.add(observer);
    }

    public void detach(Observer observer){
        observers.remove(observer);
    }

    protected void notifyObservers(){
        for(Observer observer:observers){
            observer.update(this);
        }
    }
}
package weather;

public class ConcreteWeatherSubject extends WeatherSubject{
    private String weatherContent;

    public String getWeatherContent() {
        return weatherContent;
    }

    public void setWeatherContent(String weatherContent) {
        this.weatherContent = weatherContent;
        //通知多有的订阅者
        this.notifyObservers();
    }

}
package weather;

import com.Subject;

public interface Observer {
    public void update(WeatherSubject weatherSubject);
}
package weather;

import com.ConcreteSubject;
import com.Subject;

public class ConcreteObserver implements Observer{
    private String observerName;
    private String observerContent;
    private String remindThing;

    //获取目标类的状态同步到观察者的状态中
    @Override
    public void update(WeatherSubject weatherSubject) {
        observerContent = ((ConcreteWeatherSubject)weatherSubject).getWeatherContent();
        System.out.println(observerName+"收到了"+observerContent+","+remindThing);

    }

    public String getObserverName() {
        return observerName;
    }

    public void setObserverName(String observerName) {
        this.observerName = observerName;
    }

    public String getObserverContent() {
        return observerContent;
    }

    public void setObserverContent(String observerContent) {
        this.observerContent = observerContent;
    }

    public String getRemindThing() {
        return remindThing;
    }

    public void setRemindThing(String remindThing) {
        this.remindThing = remindThing;
    }

}
package weather;

public class Client {
    public static void main(String[] args) {
        //1.创建目标
        ConcreteWeatherSubject weather=new ConcreteWeatherSubject();
        //2.创建观察者
        ConcreteObserver observerGirl=new ConcreteObserver();
        observerGirl.setObserverName("小明的女朋友");
        observerGirl.setObserverContent("是我们的第一次约会,地点万达广场,不见不散!");
        ConcreteObserver observerMun=new ConcreteObserver();
        observerMun.setObserverName("老妈");
        observerMun.setObserverContent("是一个购物的好日子");
        //3.注册观察者
        weather.attach(observerGirl);
        weather.attach(observerMun);
        //4.目标发布天气
        weather.setWeatherContent("明天天气晴朗,蓝天白云,气温28度");
    }
}
點(diǎn)擊查看更多內(nèi)容
1人點(diǎn)贊

若覺(jué)得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說(shuō)多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開(kāi)微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專(zhuān)欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消