栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

设计模式:02-观察者模式

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

设计模式:02-观察者模式

一、使用场景: 适用于当一个对象的状态发生变化时主动去通知另一个对象的场景。
二、使用步骤:
1.定义被观察者类,该类继承java.util.Observable,并在类中提供一个给外部进行调用的方法,在该方法中需要进行两部操作:
setChanged();
notifyObservers(xxx);
其中第二个方法调用中传入的值就是观察者收到的值。
示例类如下:

package cn.edu.tju.app;

import java.util.Observable;

public class PriceObservable extends Observable {
    private double price;
    PriceObservable(double price){
        this.price=price;
    }
    public void changePrice(double price){
        this.price=price;
        setChanged();
        notifyObservers(price);

    }

}

2.定义观察者类,该类要实现import java.util.Observer接口,因此要实现update方法,该方法会在被观察对象的值发生变化时被调用,实例代码如下,

package cn.edu.tju.app;

import java.util.Observable;
import java.util.Observer;

public class PriceObserver implements Observer {
    @Override
    public void update(Observable o, Object arg) {
        System.out.println(o+ " changed to "+arg);
    }
}

3.定义主类,分别定义被观察者对象和观察者对象,然后通过被观察者对象的addObserver方法讲观察者对象链接到被观察者对象,最后调用被观察者对象的改变属性的方法,所有链接的观察者对象的update方法都会被调用
实例类如下

package cn.edu.tju.app;

public class ObserveTest01 {
    public static void main(String[] args) {
        //定义被观察者
        PriceObservable priceObservable=new PriceObservable(100);

        //定义两个观察者
        PriceObserver priceObserver01=new PriceObserver();
        PriceObserver priceObserver02=new PriceObserver();

        //把观察者假如被观察者的观察列表
        priceObservable.addObserver(priceObserver01);
        priceObservable.addObserver(priceObserver02);

        //调用被观察者的接口,使被观察者属性发生变化
        priceObservable.changePrice(125.6);


    }
}

运行结果

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/666357.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号