Observer 的定义:
当被观察的对象特定属性改变时,就通知被它的观察对象。
在这个模式中就两个角色一个是被观察者,一个是观察者。当被观察者做了某些改变时就通知它的观察者。一个被观察对象可以有N个观察者。java.util.*包中已经实现了这种模式。请参考如下例子:
package com.pdw.pattern;
import java.util.*;
class Product extends Observable{//被观察者必继承于Observable
private String pname;
private float price;
public String getPname() {
return pname;
}
public void setPname(String pname) {
this.pname = pname;
setChanged();
notifyObservers(pname);
}
public float getPrice() {
return price;
}
public void setPrice(float price) {
this.price = price;
setChanged();
notifyObservers(new Float(price));
}
}
class NameObserver implements Observer{ //观察者必须实现Observer接口
public void update(Observable arg0, Object arg1) {
if(arg1 instanceof String){
System.out.println("产品名--->"+arg1);
}
}
}
class PriceObserver implements Observer{
public void update(Observable arg0, Object arg1) {
if(arg1 instanceof Float){
System.out.println("产品价格是->"+arg1);
}
}
}
public class ObserverImpl {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Product p=new Product();
p.setPname("电脑");
p.setPrice(Float.valueOf("5632.6"));
NameObserver no=new NameObserver();
PriceObserver po=new PriceObserver();
p.addObserver(no);
p.addObserver(po);
p.setPname("笔记本电脑");
p.setPrice(Float.valueOf("9635.5"));
}
}
posted on 2006-07-10 23:05
有猫相伴的日子 阅读(268)
评论(0) 编辑 收藏 所属分类:
Patterns