`
youngmaster
  • 浏览: 58477 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

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

阅读更多

//Subject.java

package com.youngmaster.model.Observer;

/**
 * @author youngmaster
 * @E-mail:youngmaster.fly@gmail.com
 * @version myEclipse 6.6
 * @create time:2009-11-2 上午01:08:15
 */

/**
 * 察者模式属于行为型模式,其意图是定义对象间的一种一对多的依赖关系,
 * 当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。
 * 在制作系统的过程中,将一个系统分割成一系列相互协作的类有一个常见的副作用:
 * 需要维护相关对象间的一致性。我们不希望为了维持一致性而使各类紧密耦合,
 * 因为这样降低了他们的可充用性。这一个模式的关键对象是目标(Subject)和观察者(Observer)。
 * 一个目标可以有任意数目的依赖它的观察者,一旦目标的状态发生改变,所有的观察者都得到通知,
 * 作为对这个通知的响应,每个观察者都将查询目标以使其状态与目标的状态同步。这种交互也称为发布-订阅模式,
 * 目标是通知的发布者。他发出通知时并不需要知道谁是他的观察者,可以有任意数据的观察者订阅并接收通知。
 */

/**
 * subject
 * 目标接口
 */
public interface Subject {
	public void addObserver(Observer o);

	public void deletObserver(Observer o);

	public void notice();
}

 

//Observer.java

package com.youngmaster.model.Observer;
/**
 * @author youngmaster
 * @E-mail:youngmaster.fly@gmail.com
 * @version myEclipse 6.6
 * @create time:2009-11-2 上午01:08:49
 */

/**
 *观察者接口
 */
public interface Observer {
	public void update();
}

 

//Teacher.java

package com.youngmaster.model.Observer;

import java.util.Vector;

/**
 * @author youngmaster
 * @E-mail:youngmaster.fly@gmail.com
 * @version myEclipse 6.6
 * @create time:2009-11-2 上午01:09:27
 */

/**
 *目标接口实现
 */
public class Teacher implements Subject {

	private String phone;
	@SuppressWarnings("unchecked")
	private Vector students;

	@SuppressWarnings("unchecked")
	public Teacher() {
		phone = "";
		students = new Vector();
	}

	@SuppressWarnings("unchecked")
	@Override
	public void addObserver(Observer o) {
		students.add(o);
	}

	@Override
	public void deletObserver(Observer o) {
		students.remove(o);
	}

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

	public void setPhone(String phone) {
		this.phone = phone;
		notice();
	}

	public String getPhone() {
		return phone;
	}

}

 

//Student.java

package com.youngmaster.model.Observer;

/**
 * @author youngmaster
 * @E-mail:youngmaster.fly@gmail.com
 * @version myEclipse 6.6
 * @create time:2009-11-2 上午01:10:22
 */

/**
 *观察者接口实现
 */
public class Student implements Observer {

	private String name;
	private String phone;
	private Teacher teacher;

	public Student(String name, Teacher teacher) {
		this.name = name;
		this.teacher = teacher;
	}

	public void show() {
		System.out.println("Name:" + name + "\nTeacher's phone:" + phone);
	}

	@Override
	public void update() {
		phone = teacher.getPhone();
	}

}

 

//Client.java

package com.youngmaster.model.Observer;

import java.util.Vector;

/**
 * @author youngmaster
 * @E-mail:youngmaster.fly@gmail.com
 * @version myEclipse 6.6
 * @create time:2009-11-2 上午01:12:58
 */

/**
 *测试类
 */
public class Client {

	/**
	 * @param args
	 */
	@SuppressWarnings("unchecked")
	public static void main(String[] args) {
		Vector students = new Vector();
		Teacher teacher = new Teacher();
		for (int i = 0; i < 10; i++) {
			Student student = new Student("student-" + i, teacher);
			students.add(student);
			teacher.addObserver(student);
		}
		teacher.setPhone("13900000000");
		
		for (int i = 0; i < 10; i++)
			((Student) students.get(i)).show();
		
		System.out.println("\n============================\n");
		
		teacher.setPhone("13600000000");
		for (int i = 0; i < 10; i++)
			((Student) students.get(i)).show();
	}

}

 

 

分享到:
评论

相关推荐

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

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

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

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

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

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

    设计模式:观察者模式java和javabean

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

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

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

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

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

    java 设计模式 观察者模式 简单实例 包括测试test类

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

    java设计模式之观察者模式

    Java设计模式是软件开发中的重要概念,它们是解决常见编程问题的经验总结,使得代码更加可复用、可扩展和易于维护。观察者模式(Observer Pattern)是这些模式中的一种,它在多对一的关系中使用,当一个对象的状态...

    java设计模式系列之观察者模式代码

    在Java编程领域,设计模式是一种被广泛采用的最佳实践,它为解决常见的软件设计问题提供...在Java中,`java.util.Observable`和`java.util.Observer`是内置的观察者模式实现,可以方便地用于快速构建观察者模式的系统。

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

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

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

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

    java常用设计模式-观察者模式

    观察者模式(Observer Pattern)是一种行为设计模式,它定义了一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖它的对象都会得到通知并自动更新。该模式适用于需要在对象间建立动态的、松散耦合的关系的...

    java观察者模式实例

    观察者模式是设计模式中的一种行为模式,它在软件工程中扮演着重要的角色,尤其是在构建可扩展和可维护的系统时。在这个实例中,我们将深入理解如何在Java中实现观察者模式,以及它如何利用继承和多态性来增强概念...

    java观察者模式观察者模式

    观察者模式是设计模式中的一种行为模式,它在Java编程中有着广泛的应用。该模式的主要目的是定义对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式也被...

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

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

    23种java设计模式.pdf

    " JAVA 设计模式概述" JAVA 设计模式是指在软件设计过程中,为了提高代码的可维护性、灵活性和可扩展性所使用的一些惯用解决方案。JAVA 设计模式可以分为三种:创建模式、结构模式和行为模式。 1. 创建模式 创建...

    《java设计模式》课后习题模拟试题解答——刘伟.zip

    3. **行为型模式**:包括策略(Strategy)、模板方法(Template Method)、观察者(Observer)、迭代器(Iterator)、访问者(Visitor)、责任链(Chain of Responsibility)、命令(Command)、备忘录(Memento)、...

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

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

Global site tag (gtag.js) - Google Analytics