//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 Pattern)是软件设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式常用于事件驱动的系统或者...
观察者模式(Observer Pattern)是软件设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式常用于事件驱动的系统或者...
观察者模式(Observer Pattern)是软件设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式常用于实现事件驱动的编程...
观察者模式,也被称为发布-订阅模式或事件驱动模式,是软件设计模式中的一种行为模式。这个模式的主要目的是在对象之间建立一种松散耦合的关系,使得当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并...
观察者模式(Observer Pattern)是设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式在软件开发中广泛应用于事件驱动...
观察者模式(Observer Pattern)是软件设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式常用于实现事件驱动或者发布...
Java设计模式是软件开发中的重要概念,它们是解决常见编程问题的经验总结,使得代码更加可复用、可扩展和易于维护。观察者模式(Observer Pattern)是这些模式中的一种,它在多对一的关系中使用,当一个对象的状态...
在Java编程领域,设计模式是一种被广泛采用的最佳实践,它为解决常见的软件设计问题提供...在Java中,`java.util.Observable`和`java.util.Observer`是内置的观察者模式实现,可以方便地用于快速构建观察者模式的系统。
结合微信公众号讲解观察者模式,生动形象,关键是上手快啊
**观察者模式(Observer Pattern)**是软件设计模式中的一种行为模式,它在Java中有着广泛的应用。这个模式的核心思想是“一对多”的依赖关系,即一个主题对象(Subject)可以被多个观察者(Observer)关注,当主题...
观察者模式(Observer Pattern)是一种行为设计模式,它定义了一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖它的对象都会得到通知并自动更新。该模式适用于需要在对象间建立动态的、松散耦合的关系的...
观察者模式是设计模式中的一种行为模式,它在软件工程中扮演着重要的角色,尤其是在构建可扩展和可维护的系统时。在这个实例中,我们将深入理解如何在Java中实现观察者模式,以及它如何利用继承和多态性来增强概念...
观察者模式是设计模式中的一种行为模式,它在Java编程中有着广泛的应用。该模式的主要目的是定义对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式也被...
观察者模式(Observer Pattern)是软件设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式常用于实现发布-订阅...
" JAVA 设计模式概述" JAVA 设计模式是指在软件设计过程中,为了提高代码的可维护性、灵活性和可扩展性所使用的一些惯用解决方案。JAVA 设计模式可以分为三种:创建模式、结构模式和行为模式。 1. 创建模式 创建...
3. **行为型模式**:包括策略(Strategy)、模板方法(Template Method)、观察者(Observer)、迭代器(Iterator)、访问者(Visitor)、责任链(Chain of Responsibility)、命令(Command)、备忘录(Memento)、...
我们说学习Java应该从Swing开始,那么学习Swing最重要的思想就是对于观察者模式的理解(Observer Pattern)。因为,该设计模式在Java Swing框架中贯穿了始终。对于C#的委托、代理概念所使用的Callback(回调模式--...