Observer观察者模式

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Observer观察者模式:

如果要实现观察者模式,则必须依靠java.util包中提供的Observable类和Observer接口。

import java.util.*;

class House extends Observable //表示房子可以被观察

{

private float price; //价钱

public House(float price){

this.price=price;

}

public float getPrice(){

return this.price;

}

public void setPrice(float price){

//每一次修改的时候都应该引起观察者的注意

super.setChanged(); //设置变化点

super.notifyObservers(price); //价格被改变

this.price=price;

}

public String toString(){

return "房子的价格为:"+this.price;

}

};

class HousePriceObserver implements Observer

{

private String name;

public HousePriceObserver(String name){

=name;

}

public void update(Observable o,Object arg){

if(arg instanceof Float){

System.out.print(+"观察到价格更改为:");

System.out.println(((Float)arg).floatV alue());

}

}

};

public class ObserverDemo

{

public static void main(String args[]){

House h = new House(100000);

HousePriceObserver hpo1=new HousePriceObserver("购房者A");

HousePriceObserver hpo2=new HousePriceObserver("购房者B");

HousePriceObserver hpo3=new HousePriceObserver("购房者C");

h.addObserver(hpo1);

h.addObserver(hpo2);

h.addObserver(hpo3);

System.out.println(h); //输出房子的价格

h.setPrice(666666); //修改房子的价格

System.out.println(h); //输出房子的价格

}

}

在Observer接口中的update方法里面的两个参数:

●o: 表示Observerable类的对象

●arg: 需要被观察的内容

总结:

此模式是一种java本身的机制,不使用Observer和Observable也是可以实现的,只是比较复杂而已。

相关文档
最新文档