您的位置:首页 > 编程语言 > Java开发

java 设计模式学习笔记十三 observer设计者模式

2012-10-21 21:59 330 查看
observer设计者模式

示例代码如下:

/**

* 商品

*

* @time 下午09:37:56

* @author retacn yue

* @Email zhenhuayue@sina.com

*/

public class Procuct extends Observable {

private String name;

private float price;

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

// 设置变们点

setChanged();

notifyObservers(name);

}

public float getPrice() {

return price;

}

public void setPrice(float price) {

this.price = price;

// 设置变们点

setChanged();

notifyObservers(new Float(price));

}

/**

* TODO 保存数据

*/

public void saveToDb() {

}

}

/**

* 自定义观察者

*

* 对商品名进行观察

*

* @time 下午09:43:58

* @author retacn yue

* @Email zhenhuayue@sina.com

*/

public class NameObserver implements Observer {

private String name = null;

@Override

public void update(Observable o, Object arg) {

if (arg instanceof String) {

name = (String) arg;

// 此处可以和用户互动

System.out.println("nameObserver : name changet to" +

name);

}

}

}

/**

* 自定义观察者

*

* 对商品价格进行观察

*

* @time 下午09:43:58

* @author retacn yue

* @Email zhenhuayue@sina.com

*/

public class PriceObserver implements Observer {

private float price = 0;

@Override

public void update(Observable o, Object arg) {

if (arg instanceof Float) {

price = ((Float) arg).floatValue();

//此处可以和用户互动

System.out.println("nameObserver : price changet to" +

price);

}

}

}

/**

* 测试观察者

*

* @time 下午09:48:34

* @author retacn yue

* @Email zhenhuayue@sina.com

*/

public class TestObserver {

public static void main(String[] args) {

Procuct product = new Procuct();

NameObserver nameObserver = new NameObserver();

PriceObserver priceObserver = new PriceObserver();

product.addObserver(nameObserver);

product.addObserver(priceObserver);

product.setName("tell me why");

product.setPrice(2.22f);

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: