观察者设计模式
一、具体内容
观察者设计模式是一个非常有意思的设计模式,可以理解为一触即发。
如果要想实现观察者的设计模式需要以下两个程序结构:
1、在 java 里找到 Observer 里的 java.util.Observer 一个操作的接口,
观察者:java.util.Observer;
2、找到 Observable 里的 java.util.0bservable 表示被关注者。
被观察者: java.util.0bservable
首先,打开 Observer 这是 JDK1.0就有的操作,里面有 update,update是说:只要被观察的操作状态发生了更新就要进行处理。
范例:实现观察者
比如买房,
class Person implements observer { /这些是所有的观察者
之后 执行出现:
出现:public void update(observable o,object arg) { // 一旦你关注的事情发生了变化
if (o instanceof House) {//如果现在的发现House这个被观察者改变了
arg 表示新的内容,比如房子价格应该按小数计算
if (arg instanceof Double) {
system.out.println("【人们关注房子】房价上涨,新价格: " +arg);
}
这样观察者就做好了,被观察者一定会有一个属性 price:
class House extends observable { //被观察者
private double price ; {//被观察者
public House( double price) {
this.price = price ;
}
public void setPrice(double price) {
if (price > this.price) {//价格上涨了
}
价格上涨就要通知所有观察者:
在 observable 中有一个 setChanged()
super.setChanged(); //现在关注的内容改变了
super.notifyobservers(price);//唤醒所有的观察者
}
this.price = price ;
}
这样就形成了观察者和被观察者,随后程序必须设置好观察房子:
public class TestDemo {
public static void main(string[ ] args) throws Exception {
Person perA = new Person() ;
Person perB = new Person();
Person perC = new Person() ;
}
这些是房子的观察者,然后跟上房子的价格:
House house = new House( 80000.00) ;
house.addobserver(perA); //必须手工设置观察者
house.addobserver(perB) ; //必须手工设置观察者
house.addobserver(perC); //必须手工设置观察者
house.setPrice(150000.0);
【人们关注房子】房价上涨,新价格:150000.0
【人们关注房子】房价上涨,新价格:150000.0
【人们关注房子】房价上涨,新价格:150000.0
这种设计模式在现在的开发中已经意义不是很大了。
二、总结
理解一种设计模式,观察者是一个设计模式。