观察者设计模式

观察者设计模式需要以下两个程序类和接口:

  • 观察者:Observer接口,该类有一个方法update,当该方法执行后,观察者就会进行相应的响应。
  • 被观察者: Observable类。

范例:实现观察者的一个完整的例子

一群人关注着房价,当房价下跌的时候,不会接到通知,也就不会进行反馈;而一旦房价上升,他们就会被“被观察者”唤醒,从而检测到更新,并进行对应的反馈。

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

/***
 * 实现一个观察者模式的示例代码
 */
class Person implements Observer{   // 实现观察者

    @Override
    public void update(Observable o, Object arg) {  //两个参数分别代表:被观察者实例,被观察者通知观察者,变更的内容是什么?
        if(o instanceof House){  //如果接到的是被观察者的通知
            System.out.println("【已经观察到了房价的上涨】,新价格为:"+arg);
        }
    }
}

class House extends Observable{  //实现被观察者
    private double price;

    public House(double price) {
        this.price = price;
    }

    public double getPrice() {
        return price;
    }

    public void setPrice(double price) {   //当房价上涨,刷新对观察者的更新
        if(price>this.price){
            super.setChanged();
            super.notifyObservers(price);   // 把最新的观察者内容发送过去,通知到观察者
        }
        this.price = price;
    }
}
public class ObserverDemo {
    public static void main(String args[]){
        // 创建几个观察者对象实例
        Person perA = new Person();
        Person perB = new Person();
        Person perC = new Person();

        //创建一个被观察者对象实例
        House house = new House(30000.00);
        //绑定观察者和被观察者之间的关系
        house.addObserver(perA);
        house.addObserver(perB);
        house.addObserver(perC);

        // 设置观察的触发条件
        System.out.println("=============房价下跌,不会通知观察者的....========================");
        house.setPrice(24000.00);
        System.out.println("=============房价上涨,观察者能够检测到更新并进行输出反馈....========================");
        house.setPrice(34000.00);
    }
}

上述实例的输出信息为:

观察房价的涨跌

总结

这里的观察者模式是JDK1.0开始就提供的一种设计模式的实现,现在的开发中很少使用了。但是,作为一种很好的设计模式思路,可以帮助我们进行设计模式的入门和理解。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 主目录见:Android高级进阶知识(这是总目录索引)这篇文章我们会来讨论另外一个设计模式观察者设计模式,这个设计...
    ZJ_Rocky阅读 1,196评论 0 5
  • 前言 相信大家搞开发的,肯定对观察者模式会经常听说,本文就带着大家认识一下较为神秘的观察者模式吧. 观察者模式,顾...
    三棵柚子阅读 193评论 0 2
  • 首先来看看观察者模式的概念: 定义对象间的一种一对多的依赖关系,当一个对象的状态发送改变时,所有依赖于它的对象都能...
    圈圈猫阅读 343评论 0 0
  • 定义: 定义对象间一种一对多的依赖关系,使得当每一个对象改变状态,则所有依赖于它的对象都会得到通知并自动更新。 类...
    Not_Found_404阅读 323评论 0 0
  • /* 观察者设计模式: 作用: 当一个对象发生指定的动作时,要通知另外一个对象做出相应的处理,类似于事件触发和监听...
    Michael_林阅读 438评论 0 0

友情链接更多精彩内容