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

设计模式--观察者模式

 
阅读更多
接下来,我们来说说观察者模式。
转载自:http://www.blogjava.net/sishuiweilan/archive/2007/05/09/116225.html

个人理解并概括观察者模式:一个产品类set方法去改变原有名称,在set方法中设置变化点并notifyObservers(name);////通知观察者
而当观察者一接到通知就调用update方法进行相关操作


网上商店中的商品在名称、价格发生变化时,必须自动通知会员,Java的API为我们提供了Observer接口和Observable类来实现所谓观察者模式。

  Observable(可观察者)类允许在自身发生改变时,通知其它对象(实现接口Observer,观察者)。

  下面是一个可观察者(产品类):

import java.util.*;

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(){

   System.out.println("saveToDb");

    }

}

下面是两个观察者:

import java.util.*;

public class NameObserver implements Observer{

   private String name=null;

   public void update(Observable obj,Object arg){

     if (arg instanceof String){

      name=(String)arg;

      ////产品名称改变值在name中

      System.out.println("NameObserver :name changet to "+name);

     }

      }

   }

import java.util.*;

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);

     }

   }

}

下面是测试类:

public class Test {

   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("applet");

    product.setPrice(9.22f);

   }

}

运行结果:

C:\java>java  Test

NameObserver :name changet to applet

PriceObserver :price changet to 9.22
分享到:
评论

相关推荐

    C++设计模式--观察者模式 demo

    观察者模式(Observer Pattern)是软件设计模式中的一种行为模式,它在C++中的应用广泛且实用。这种模式的核心思想是“主体”(Subject)与“观察者”(Observer)之间的松耦合关系,允许一个对象(即主体)的状态...

    Android设计模式--观察者模式DEMO

    Android设计模式--观察者模式DEMO 观察者模式是一个使用频率非常高的模式,他最常用的地方是GUI系统和订阅-发布系统。 该模式的最重要的作用就是解耦,使观察者和被观察者之间依赖尽可能小,甚至好无依赖。

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

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

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

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

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

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

    JAVA-设计模式-行为型模式-观察者模式

    JAVA-设计模式-行为型模式-观察者模式

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

    观察者模式是一种行为设计模式,它允许你定义一个订阅机制,可以及时地在对象之间传播状态变化。在Java中,观察者模式常用于构建事件驱动系统,使得多个对象能够监听并响应某个对象的状态改变。 首先,我们要理解...

    设计模式-观察者

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

    设计模式-观察者模式.ppt

    观察者模式是一种行为设计模式,它允许你定义一个订阅机制,可以在对象事件发生时通知多个“观察”该对象的其他对象。这个模式的核心在于建立一种一对多的关系,当一个对象的状态改变时,所有依赖于它的对象都会得到...

    C++设计模式--基于Qt4开源跨平台开发框架

    行为型模式如观察者模式(Observer)、策略模式(Strategy)和访问者模式(Visitor),关注对象之间的交互和责任分配。 在C++中,设计模式的应用通常涉及到面向对象编程的特性,如继承、封装和多态。Qt4框架则为...

    跟我一起学 设计模式-观察者模式

    观察者模式,也称为发布-订阅模式或事件驱动模式,是一种行为设计模式,它定义了对象间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。 在C#、ASP.NET等.NET框架中,...

    c++设计模式-行为型模式-观察者模式

    c++设计模式-行为型模式-观察者模式;qt工程;c++简单源码; 观察者(Observer)模式的定义:指多个对象间存在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。这种模式...

    设计模式-观察者模式(讲解及其实现代码)

    总结来说,观察者模式是一种重要的设计模式,它允许对象在状态改变时自动通知其他对象,从而降低了系统各部分之间的耦合度,提高了代码的灵活性和可扩展性。在实际项目中,正确使用观察者模式可以有效地管理组件间的...

    设计模式--观察者 c++版本

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

    Java 设计模式-观察者模式(Observer)

    结合微信公众号讲解观察者模式,生动形象,关键是上手快啊

    设计模式实现——观察者模式

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

    Java设计模式-第22章-观察者模式.ppt

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

    设计模式系列博客--观察者模式

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

    设计模式专题之(十八)观察者模式---设计模式观察者模式示例代码(python--c++)

    观察者模式是软件设计模式中的一种行为模式,它允许一个对象,称为"主题",维护一个依赖于它的对象列表,这些对象被称为"观察者"。当主题的状态发生改变时,它会通知所有观察者,使它们能够自动更新自己。这种模式在...

    C++设计模式-基于QT4开源跨平台开发框架 源码

    3. **观察者模式** - QT4的信号和槽机制是观察者模式的实现。当一个对象的某个状态改变时,它可以发出信号,其他对象可以通过连接这些信号并定义槽函数来响应这些变化,实现了事件驱动的编程模型。 4. **装饰器模式...

Global site tag (gtag.js) - Google Analytics