`

Observer(观察者)

    博客分类:
  • J2SE
阅读更多
写道
package com.ijo.patterns.observer;

import java.util.Observable;

/**
* Java.util.Observer 能提供 1.Add/Delete observer 的方法; 2.提供通知(notisfy) 所有observer
* 的方法;
* </p>
* ,在 product 类中 的 setXXX 方法中,我们设置了 notify(通知)方法, 当 Jsp 表
* 单调用setXXX,实际上就触发了notisfyObservers方法,这 将通知相应观察者应该采取行动了.
*
* @author Administrator
*
*/
public class Product 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));
}

// 以下可以是数据库更新 插入命令.
public void saveToDb() {
// .....................
}
}

 

写道
package com.ijo.patterns.observer;

import java.util.Observable;
import java.util.Observer;

public class NameObserver implements Observer {

private String name = null;

public void update(Observable observable, Object arg) {
if (arg instanceof String) {
name = (String) arg;
// 产品名称改变值在 name 中
System.out.println("NameObserver :name changet to " + name);
}

}
}

 

写道
package com.ijo.patterns.observer;

import java.util.Observable;
import java.util.Observer;

public class PriceObserver implements Observer {
private float price = 0;

public void update(Observable obj, Object arg) {

if (arg instanceof Float) {
price = ((Float) arg).floatValue();
System.out.println("PriceObserver :price changet to " + price);
}
}
}
写道
package com.ijo.patterns.observer;

/**
* 具体的说,如果网上商店中商品在名称 价格等方面有变化,如果系统能自动通知会员,将是 网上商店区别传统商店的一大特色.这就需要在商品 product 中加入
* Observer 这样角色,以 便 product 细节发生变化时,Observer 能自动观察到这种变化,并能进行及时的 update 或 notify
* 动作.
*
* @author Administrator
*
*/
public class Demo {
public static void main(String args[]) {
Product product = new Product();

NameObserver nameobs = new NameObserver();
PriceObserver priceobs = new PriceObserver();
// 加入观察者
product.addObserver(nameobs);
product.addObserver(priceobs);
product.setName("橘子红了");
product.setPrice(9.22f);
}
}

 结果:

NameObserver :name changet to 橘子红了
PriceObserver :price changet to 9.22

 

分享到:
评论

相关推荐

    Observer观察者模式

    Observer观察者模式是一种行为设计模式,它允许你定义一个订阅机制,可以在对象状态改变时通知多个“观察”该对象的其他对象。这个模式的核心概念是发布-订阅,即发布者(被观察对象)向订阅者(观察者)广播事件或...

    C#面向对象设计模式纵横谈(19):(行为型模式) Observer 观察者模式 (Level 300)

    **C#面向对象设计模式纵横谈(19)**:**观察者模式**(Observer Pattern)是行为型模式的一种,它在软件工程中扮演着至关重要的角色。观察者模式是一种设计模式,它定义了对象之间的一对多依赖关系,当一个对象的状态...

    (行为型模式) Observer 观察者模式

    ### (行为型模式) Observer 观察者模式 #### 概述 观察者模式是一种行为设计模式,它定义了一种一对多的关系,让多个观察对象同时监听某一个主题对象。当主题对象发生变化时,所有观察者对象都会收到通知并进行...

    observer观察者模式

    观察者模式(Observer Pattern)是一种行为设计模式,它允许你定义一个订阅机制,可以在对象状态改变时通知多个“观察”该对象的其他对象。在软件工程中,这常用于实现事件驱动编程,使得系统能够及时响应变化。 在...

    Observer 观察者模式 示例 源码 ----设计模式

    2.Observer(观察者) 为那些在目标发生改变时需获得通知的对象定义一个更新接口。 3.ConcreteSubject(具体目标) 将有关状态存入各ConcreteObserver对象。 当它的状态发生改变时,向它的各个观察者发出通知。...

    设计模式之略见一斑(Observer观察者模式)

    本篇文章将深入探讨“Observer”观察者模式,这是一种行为设计模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。 观察者模式的核心概念是主题...

    设计模式之观察者模式(Observer Pattern)

    在观察者模式中,通常有两个主要角色:主题(Subject)和观察者(Observer)。主题是被观察的对象,它持有一个观察者列表,并负责通知这些观察者状态的变化。观察者是依赖主题的对象,当接收到主题的通知时,它们会...

    详解Java编程的Observer观察者设计模式

    这个模式的核心概念是一个主题(Subject)对象和一个或多个观察者(Observer)对象之间的关系,主题可以被多个观察者监视,当主题的状态发生改变时,会自动通知所有观察者。 在Java中,`java.beans....

    设计模式C++学习之观察者模式(Observer)

    观察者模式(Observer)是软件设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并被自动更新。这种模式在C++中广泛应用,特别是在需要...

    C#设计模式之Observer观察者模式解决牛顿童鞋成绩问题示例

    本文实例讲述了C#设计模式之Observer观察者模式解决牛顿童鞋成绩问题。分享给大家供大家参考,具体如下: 一.理论定义 观察者模式 描述了 一种 一对多的关系。 当某一对象的状态发生改变时,其他对象会得到 改变的...

    观察者模式,Observer

    观察者模式(Observer Pattern)是设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并被自动更新。这种模式常用于实现事件驱动的系统或者...

    观察者(Observer)模式

    观察者(Observer)模式是一种行为设计模式,它允许你定义一个订阅机制,可以在对象状态改变时通知多个“观察”该对象的其他对象。在Java编程语言中,这种模式被内置在`java.util.Observable`和`java.util.Observer`类...

    观察者模式Observer

    观察者模式(Observer)是设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并被自动更新。这种模式在软件开发中广泛应用于事件处理和实时...

    Observer(观察者模式)学习源码

    - `addObserver(Observer o)`:添加一个新的观察者到观察者列表。 - `deleteObserver(Observer o)`:移除指定的观察者。 - `notifyObservers()`或`notifyObservers(Object arg)`:当被观察对象的状态改变时,调用...

    设计模式之观察者模式(Observer)

    观察者模式(Observer)是软件设计模式中的一种行为模式,其主要目的是在对象之间建立一种松散耦合的关系,使得当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式广泛应用于事件驱动...

Global site tag (gtag.js) - Google Analytics