`
zyq070
  • 浏览: 21977 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

观察者模式个人理解

阅读更多

观察者模式定义了一对多的依赖关系,让一个或多个观察者对象订阅一个主题对象。主题对象状态上或内容上的变化会通知观察者。主题对象及观察者对象拥有相对的独立性。

 

 与<策略模式个人理解>中相似,观察者对象实现了一个观察者接口,这样就把与主题对象独立开来。具体观察者的个数和内容可以自定义增加或者删除。

 

 主题是一个抽象类或者接口,有addObserver、deleteObserver、notifyObservers方法。具体的主题对象实现抽象主题。

  

 

 

public interface Observer{
  public void update(Observable obs,Object arg);
}

public class ConcreteObserver implements Observer{

  public void update(Observable obs,Object arg){

  //更新状态
  if(obs instanceof ConcreteObservable){
   ConcreteObservable observable = (ConcreteObservable)obs;
   System.out.println(obs.getMessage());
}
}
}

public interface Observable{
 public void addObserver(Observer ob);
 public void deleteObserver(Observer ob);
 public void notifyObservers(Object arg);
}
public class ConcreteObservable implements Observable{
 private ArrayList observers;
 private String message;
 public ConcreteObservable(){
  observers = new ArrayList();
}
 public void addObserver(Observer ob){
  observers.add(ob);
}
 public void deleteObserver(Observer ob){
 int i = observers.indexOf(ob);
 if(i>=0){
  observers.remove(i);
}
}
  public void notifyObservers(Object arg){
 for(int i =0;i<observer.size();i++){
  Observer observer = (Observer)observers.get(i);
  observer.update(this,arg);
}
}
public void setMessage(String message){
 this.message = message;
 notifyObservers(null);
}
 public String getMessage(){
  return message;
}
}

   需要指出的是观察者的update的方法接受主题对象obs,和内容对象arg。这样可以根据需求定制内容。

 

 

0
3
分享到:
评论
1 楼 zyq070 2013-04-11  
不错 学习了

相关推荐

    详解Observer Pattern(观察者模式)在Java中的使用原理

    我们说学习Java应该从Swing开始,那么学习Swing最重要的思想就是对于观察者模式的理解(Observer Pattern)。因为,该设计模式在Java Swing框架中贯穿了始终。对于C#的委托、代理概念所使用的Callback(回调模式--...

    设计模式 观察者 发布/订阅 Observer

    Observer (观察者模式) 又叫做发布/订阅(Publish/Subscribe)模式。 当一个对象的改变同时会影响其他对象的行为的时候,可以使用此设计模式。 l 主题对象 :一个需要被关注的主题对象,这个主题对象改变会影响...

    Java设计模式,并加上个人理解

    3. **行为型模式**:关注对象间如何通信和职责分配,如策略模式、模板方法模式、访问者模式、迭代器模式、观察者模式和责任链模式。 以**简单工厂模式**为例,它是一种创建型模式,通过一个静态方法(工厂类)根据...

    交易系统中的观察者模式

    观察者模式,也被称为发布-订阅模式,是软件设计模式的一种,主要用于处理对象间的一对多依赖关系。在本文中,我们将深入探讨如何在交易系统中应用观察者模式来优化订单状态流转的处理。 传统的实现方式往往会导致...

    设计模式之美——教你写出高质量代码

    3. 行为型模式:如策略模式、模板方法模式、观察者模式、命令模式、迭代器模式、责任链模式、备忘录模式、状态模式、解释器模式和访问者模式。这些模式主要处理对象之间的通信和行为,让代码更易于理解和扩展。 在...

    软件设计模式作业三行为式模式

    南华大学的这个作业主要探讨了五种行为模式:职责链模式、组合命令模式、中介者模式、备忘录模式和观察者模式,同时也涉及到了UML类图和代码规范。 1. 职责链模式:这种模式允许将请求沿着处理者链进行传递,直到...

    c++设计模式中文 个人整理

    行为型模式则关注对象间如何交互和分配职责,例如观察者模式(Observer)、策略模式(Strategy)和责任链模式(Chain of Responsibility)。这些模式强调算法和行为的封装,使得代码更灵活,易于维护和扩展。 在C++...

    刘伟设计模式和例子

    刘伟先生提供的例子可能包括不同语言(如Java、C++或Python)的实现,以及在实际项目中的应用,如在游戏开发中如何使用状态模式管理角色的状态,或者在Web应用中如何利用观察者模式实现事件驱动编程。 设计模式的...

    GOF设计模式中英文+设计模式精解中英文

    行为型模式则关注对象之间的交互和职责分配,例如策略模式、观察者模式、责任链模式等。 GOF设计模式包括23种经典模式,每一种都有其特定的应用场景和解决的问题。例如,单例模式确保一个类只有一个实例并提供全局...

    java设计模式

    在描述中提到的“08戴志鹏(观察者模式)设计模式报告.doc”文件,这可能是一份关于观察者模式的详细分析报告。观察者模式是一种行为型模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有...

    《设计模式:可复用面向对象软件的基础》学习并理解 23 种设计模式

    - **观察者模式**(Observer):定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。 - **状态模式**(State):允许一个对象在其内部状态改变时改变它的...

    设计模式学习.zip

    3. 行为型模式:关注对象之间的责任分配,包括责任链模式、命令模式、解释器模式、迭代器模式、备忘录模式、观察者模式、状态模式、策略模式、模板方法模式和访问者模式。例如,策略模式定义了一系列算法,并将每个...

    设计模式试题

    试题可能会涵盖单例模式、工厂模式、观察者模式、装饰器模式等多种经典的设计模式,并通过实际编程场景来考察开发者如何将这些模式运用到源代码中。 单例模式是一种限制类实例化的模式,确保一个类只有一个实例,并...

    java与模式光盘源码

    例如,观察者模式在事件驱动编程中非常常见,它使得多个对象能监听某个对象的状态变化并作出相应反应。而策略模式则常用于算法的封装和选择,允许在运行时动态切换不同的算法策略。 总的来说,《Java与模式》光盘...

    Head First设计模式(中文版)+书中案例详细源码

    3. 行为型模式:包括策略模式、模板方法模式、观察者模式、责任链模式、命令模式、迭代器模式、访问者模式、备忘录模式、解释器模式和状态模式。这些模式关注对象之间的交互和职责分配,有助于实现灵活的行为设计。 ...

    《软件设计模式》电子课件(PPT)

    3. 行为型模式:这一类模式主要关注对象之间的交互和责任分配,如责任链模式、命令模式、解释器模式、迭代器模式、备忘录模式、观察者模式、状态模式、策略模式、模板方法模式和访问者模式。责任链模式让多个对象有...

    东北大学设计模式实验

    3. 行为型模式:包括策略模式、观察者模式、命令模式、迭代器模式、访问者模式、备忘录模式、状态模式、解释器模式和责任链模式。它们关注于对象之间的交互和职责分配,以提高系统的灵活性和可扩展性。 在Java环境...

    设计模式解析

    行为型模式涉及对象之间的责任分配,如观察者模式、命令模式和迭代器模式等,它们关注如何在对象之间进行通信和协调行为。 Java作为一门面向对象的语言,天然适合应用设计模式。例如,单例模式在Java中用于确保一个...

    C#设计模式(PDF)

    再者,“行为型”设计模式关注对象之间的交互和责任分配,如策略模式(Strategy)、模板方法模式(Template Method)、观察者模式(Observer)、命令模式(Command)、迭代器模式(Iterator)、备忘录模式(Memento...

    设计模式大全C++.rar

    这本书可能会深入讨论C#中的特性如何与设计模式结合,比如接口和泛型如何支持策略模式,事件和委托如何与观察者模式协同工作。此外,它可能还会包含一些.NET框架下的设计模式,如依赖注入和面向服务架构。 通过学习...

Global site tag (gtag.js) - Google Analytics