Java中常见的设计模式之观察者模式

来源:互联网 发布:周立波与郭德纲 知乎 编辑:程序博客网 时间:2024/05/16 05:30

观察者模式

        有时被称作发布/订阅模式,观察者模式定义了一种一对多的依赖关系,让多个观察者同时监听某一个主题。这个主题在状态发生变化时,会通知所有观察者,使它们能够自动更新自己。

        在java中提供了Observable和Observer两个接口,使用他们就可以完成观察者模式。

        需要被观察的类必须继承Observable类。该类中常用的方法有addObserver,deleteObserver,setChanged(),notifyObservers(Object org);

        每一个观察者必须实现Observer接口,并覆写接口中的唯一的方法update(Observable o,Object obj)。

        java代码例子如下:

       

import java.util.Observable;import java.util.Observer;class House extends Observable{private float price;public House(float price){this.price = price;}public void setPrice(float price){super.setChanged();super.notifyObservers(price);this.price = price;}public float getPrice(){return this.price;}public String toString(){return "The price of House :" + this.getPrice();}}class HousePriceObserver implements Observer{private String name;public HousePriceObserver(String name){this.name = name;}public void update(Observable ob,Object obj){if(obj instanceof Float){System.out.print(this.name);System.out.println(((Float)obj).floatValue());}}}public class ObserDemo{public static void main(String[]args){House h = new House(10000);HousePriceObserver h1 = new HousePriceObserver("lixiaoyan");HousePriceObserver h2 = new HousePriceObserver("jizenghui");HousePriceObserver h3 = new HousePriceObserver("weilin");h.addObserver(h1);h.addObserver(h2);h.addObserver(h3);System.out.println(h);h.setPrice(12000.00f);System.out.println(h);}}




0 0
原创粉丝点击