设计模式之-观察者篇

设计模式之-观察者篇

大家平时最常用的adapter,其实内部就是使用的观察者模式,其实就是先写一个观察者类实现Observer这个接口,然后实现其中的update()方法,只要改变了observable对象就调用该方法,那么这个observable对象就需要我们去定义他的子类。。。有兴趣的可以去看一下源码,我这里只讲一个关于观察者模式的小例子,如下:

1、以当前的房价来当做举例,我们先定义House继承自observable,
public class House extends Observable {
private float price;
public void setPrice(float price){
this.setChanged();//设置变化点
this.notifyObservers(price);//通知所有观察者价格的变化
this.price = price;
}
public float getPrice() {
return this.price;
}
public House(float price){
this.price = price;
}
@Override
public String toString() {
return “房子价格为:”+this.price;
}
}
其中setChanged()是来改变房子价格的方法,是个触发点
那么notifyObservers(price)就是通知所有的观察者价格已经变化了
那么最为关键的来了,我观察者怎么能知道价格变化了呢?

3、那么就要去把观察者添加到Observer的子类当中,大家可以简单理解成注册,那么我们接下来看一下,当房子价格发生变化时,所有的观察者是怎么知道变化的,如下:
public class ObserDemo {
public static void main(String []args){
House h = new House(1000000);
HousePriceObserver housePriceObserver1 = new HousePriceObserver(“买房者1”);
HousePriceObserver housePriceObserver2 = new HousePriceObserver(“买房者2”);
HousePriceObserver housePriceObserver3 = new HousePriceObserver(“买房者3”);
h.addObserver(housePriceObserver1);//给房子注册观察者
h.addObserver(housePriceObserver2);
h.addObserver(housePriceObserver3);
System.out.println(h);//输出房子价格
//修改房子价格,会出发update(参数1,参数2)方法通知购房者新的房价信息
h.setPrice(2000000);
System.out.println(h);//再次输出房价
}
}

可以打印出来自己去看看。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值