`
beisicao
  • 浏览: 66584 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

设计模式之观察者模型Observer

阅读更多
package ObserverModel;

/**
* 观察者模式意图是:定义对象间的一种一对多的依赖关系,当一个对象的状态发生
* 改变时,所有依赖它的对象都得到通知并被自动更新。
*
* 以股票为例:股民设置了一只股票,如果股票升到某个价位,系统会自动给股民发
* 一个警告的短信。这就需要在股票stock中加入一个Observer角色,以便stock
* 细节发生变化时,observer能自动观察到这个变化,并及时update和nofity动作。
*
* 在java的核心库中,已经实现了observer模式,直接引用就可以了。基本步骤如下:
* 1,扩展java.util.Observerable,设置要监控的字段,如股票的价格等等。
* 2,实现java.util.Observer接口,实现处理事件,如通知股民,发送短信等等。
*
* 以下AbleImp抽象类继承自Observable类,被观察对象,需继承此父类,
* 进行事件的扩展监控。
*/
import java.util.Observable;

public abstract class AbleImp extends Observable{

private boolean clearFlag = false;

/**
* 监控一个属性对象
* @param obj属性对象,也就是要观察的对象
*/
public void observeOneObject(Object obj){
this.setChanged();
this.notifyObservers(obj);
}

/**
* 增加一个观察者
* @param oimp--观察者
*/
public void addOneObserver(StockAlert oimp){
this.addObserver(oimp);
}

/**
* 删除一个受控对象
* @param oimp --观察者
*/
public void removeOneObserver(StockAlert oimp){
this.deleteObserver(oimp);
}

/**
* 取消所有监控,在取消之前触发受控消息
*/
public void cancelAllObservers(){
this.notifyObservers();
this.clearChanged();
this.deleteObservers();
clearFlag = true;
}

public void finalize()throws Throwable{
if(clearFlag == false){
this.clearChanged();
this.deleteObservers();
}
}


}

==================================================================
package ObserverModel;

import java.util.Observable;
import java.util.Observer;
//观察者需要
public class StockAlert implements Observer{

/**
* arg 就是监控的字段,如股票的价格
*/
@Override
public void update(Observable o, Object arg) {
//处理报警事件
Stock stock = (Stock)o;
System.out.println(arg.toString()+" this stock price is:"+stock.getPrice());
System.out.println("send a message to customer。。。");

}


}
===========================================================
package ObserverModel;
//被监控的对象股票
public class Stock extends AbleImp{

private Float price;

//监控事件,自己扩展
public void setPrice(Float price,Float targetPrice){
this.price = price;
//设置报警条件
if(this.price.floatValue() >= targetPrice.floatValue()){
this.observeOneObject(this.price);//设置报警对象
}
}

public Float getPrice() {
return price;
}

public void setPrice(Float price) {
this.price = price;
}

}
===================================================================
package ObserverModel;

public class TestStock {
/**
* 1.对股票增加观察者
* 2.设置监控对象,比如要监控股票的价格。
* @param args
*/
public static void main(String args[]){
StockAlert alert = new StockAlert();
Stock stock = new Stock();
stock.addOneObserver(alert);//增加一个观察者
// stock.deleteObserver(alert);
stock.setPrice(new Float(12.5), new Float(13.5)); //股票正常
System.out.println("-----------");
stock.setPrice(new Float(18.5), new Float(13.5)); //股票异常
}
}
分享到:
评论

相关推荐

    设计模式之观察着模式Observer

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

    java23种设计模式之观察者模式

    **观察者模式(Observer Pattern)**是软件设计模式中的一种行为模式,它在Java中有着广泛的应用。这个模式的核心思想是“一对多”的依赖关系,即一个主题对象(Subject)可以被多个观察者(Observer)关注,当主题...

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

    观察者模式 概述 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。 适用性 1.当一个抽象模型有两个方面,其中一个方面依赖于另一方面。 将这二者封装...

    设计模式之观察者模式Java实现

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

    设计模式-观察者模式-作业-observer.zip

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

    设计模式之观察者模式

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

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

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

    设计模式之Observer - 观察者模式

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

    设计模式-观察者

    观察者模式(Observer Pattern)是行为设计模式的一种,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。 观察者模式的核心思想是发布-订阅模型,其中...

    观察者模式,Observer

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

    Qt设计模式之观察者模式

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

    设计模式--观察者模式java例子

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

    观察者模式(Observer)

    观察者模式(Observer)是一种行为设计模式,它允许你定义一个订阅机制,可以在对象状态改变时通知多个“观察”该对象的其他对象。这个模式在软件工程中扮演着重要的角色,尤其是在事件驱动编程和实时系统中。在Java...

    PHP设计模式之观察者模式(Observer)详细介绍和代码实例

    观察者模式是一种行为设计模式,它定义了对象间的一种一对多的依赖关系,使得当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式经常用于实现软件的分布式事件通知系统,例如,图形...

    软件设计模式观察者模式代码

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

    java设计模式之观察者模式

    **Java设计模式之观察者模式详解** 在软件工程中,设计模式是一种被广泛接受的解决常见问题的方法。观察者模式(Observer Pattern)是行为设计模式的一种,它定义了对象之间的一对多依赖关系,当一个对象的状态发生...

    设计模式-观察着模型

    观察者模式,也被称为发布-订阅(Publish-Subscribe)模式,是软件设计中的一种行为设计模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。...

    Android设计模式之观察者模式

    观察者模式(Observer Pattern)是软件设计模式中的行为模式之一,它在Android开发中有着广泛的应用。该模式的主要目的是定义对象之间的一种一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会...

    设计模式例子,观察者模式,建造者模式

    在给定的压缩包文件中,"设计模式例子,观察者模式,建造者模式" 提到了两种重要的设计模式:观察者模式(Observer Pattern)和建造者模式(Builder Pattern)。下面我们将深入探讨这两种设计模式的概念、应用场景、...

Global site tag (gtag.js) - Google Analytics