`

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

阅读更多

Observer模式属于行为模式,是为了定义对象间的一种一对多的关系。当一个对象的状态发生改变时,所有依赖它的对象都将得到通知,并自动更新。模式的关键对象是目标(Subject)和观察者(Observer)。一个目标可以有任意数目的依赖它的观察者,一旦目标的状态发生改变,所有的观察者都得到通知,作为对这个通知的响应,每个观察者都将查询目标以使其状态与目标的状态同步。

【实例】老师有电话号码,学生需要知道老师的电话号码以便在需要的时候拨打,在这样的模式中,老师就是一个被观察者(Subject),学生就是需要知道信息的观察者。当老师的电话号码发生改变时,学生会得到通知,并更新相应的电话记录。

如图所示:


 用Java代码实现:

 

public interface IObServer {
    public void update(String msg);
}

 

public class Student implements IObServer {

    private String student_name;
    public Student(String name){
      student_name = name;
    }
	
    @Override
    public void update(String msg) {
      // TODO Auto-generated method stub
      System.out.println(student_name + ":\t" + msg);
    }
}

 

public interface ISubject {
    //添加一个通知
    public void add(IObServer o);
    //移除一个通知
    public void del(IObServer o);
    //执行下达通知的指令
    public void notice();
}

 

import java.util.ArrayList;

public class Teacher implements ISubject {
    //定义students:所有学生
    private ArrayList<IObServer> students = new ArrayList<IObServer>();
    private String msg = "";//老师要发出的信息
    public void setMsg(String new_msg){
      msg = new_msg;
    }
	
    @Override
    public void add(IObServer o) {
      students.add(o);
    }

    @Override
    public void del(IObServer o) {
      students.remove(o);
    }

    @Override
    public void notice() {
      for(int i=0;i<students.size();i++){
        students.get(i).update(msg);
      }
    }
}

 

public class Test {

    public static void main(String[] args) {
      ArrayList<IObServer> students = new ArrayList<IObServer>();
      Teacher t = new Teacher();
      for(int i=1;i<=10;i++){
        Student s = new Student("aa"+i);
        students.add(s);
        t.add(s);
      }
      t.setMsg("phone:123456789");
      t.notice();
      System.out.println("-----把其中几个学生移除接收通知的范围-----------");
      for(int i=0;i<students.size();i++){
        if(i%2==0){
          t.del(students.get(i));
        }			
      }
      t.notice();
    }
}

  
 

 

 

  • 大小: 16.4 KB
分享到:
评论

相关推荐

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

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

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

    观察者模式,也被称为发布-订阅模式或事件驱动模式,是软件设计模式中的一种行为模式。这个模式的主要目的是在对象之间建立一种松散耦合的关系,使得当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并...

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

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

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

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

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

    C#面向对象设计模式 (行为型模式) Observer 观察者模式 视频讲座下载

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

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

    [行为模式]head first 设计模式之观察者模式(observer)

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

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

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

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

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

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

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

    observer观察者模式

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

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

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

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

    观察者模式通常的叫法叫做订阅-发布模式,类似于报刊杂志的订阅,观察者和被观察者就是读者和邮局的关系...观察者模式主要是用于解决对象之间一对多的关系。 类视图 实现 class Observer { public: virtual ~Observ

    Observer设计模式实例

    Observer设计模式,也被称为“发布-订阅”(Publish-Subscribe)模式或“依赖倒置”模式,是软件设计中的一种行为模式。它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到...

    Observer观察者模式

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

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

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

    观察者模式(Observer)

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

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

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

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

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

Global site tag (gtag.js) - Google Analytics