86java观察者设计模式

84 阅读2分钟

观察者设计模式

一、具体内容

观察者设计模式是一个非常有意思的设计模式,可以理解为一触即发。

如果要想实现观察者的设计模式需要以下两个程序结构:

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

这种设计模式在现在的开发中已经意义不是很大了。

 

 

二、总结

理解一种设计模式,观察者是一个设计模式。