JAVA设计模式(九)——观察者模式
2015-01-13 13:37
330 查看
1、观察者模式
观察者(Observer)模式是行为模式之一,它的作用是当一个对象的状态发生变化时,能够自动通知其他关联对象,自动刷新对象状态。Observer模式提供给关联对象一种同步通信的手段,使得莫哥对象与依赖它的其他对象之间保持状态同步。2、结构与角色
老规矩,我们先看看观察者模式的结构示意图示,如下:在这里,我们看到四个角色,而实际上归类起来,观察者模式只有两个对象,一个是观察者,一个是被观察者。但是在我们的设计模式当中,进行了封装和抽象等可扩展的操作,所以上面两个角色对象又被细分为四种对象,如下:
抽象主题角色:把所有对观察者对象的引用保存在一个集合中,每个抽象主题角色都可以有任意数量的观察者。抽象主题提供一个接口,可以增加和删除观察者角色。一般用一个抽象类和接口来实现。(Subject)
抽象观察者角色:为所有具体的观察者定义一个接口,在得到主题的通知时更新自己。(Observer)
具体主题角色:在具体主题内部状态改变时,给所有登记过的观察者发出通知。具体主题角色通常用一个子类实现。(ConcreteSubject)
具体观察者角色:该角色实现抽象观察者角色所要求的更新接口,以便使本身的状态与主题的状态相协调。通常用一个子类实现。如果需要,具体观察者角色可以保存一个指向具体主题角色的引用。(ConcreteObserver)
3、代码示例
观察者模式的代码比较简单,只有一个具体的主题和具体的观察者,如下:import java.util.Observable;
public class Person extends Observable {
private String name ;
private String sex ;
private int age ;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
this.setChanged();
this.notifyObservers();
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
this.setChanged();
this.notifyObservers();
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
this.notifyObservers();
this.setChanged();
}
}
观察者如下:
import java.util.Observable;
import java.util.Observer;
public class MyObserver implements Observer{
public void update(Observable observable,Object object){
System.out.println("对象发生变化。。。。。。。");
}
}
测试如下:
public class MainClass {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Person person = new Person();
//注册观察者
// 侦听事件驱动程序设计中的外部事件
// 侦听某个对象的状态变化
// 新的产品出现,消息通知,邮件列表中的订阅者
person.addObserver(new MyObserver());
person.setName("张三");
}
}
4、总结分析
分析,虽然上面我们只有两个类,但实际上,观察者模式还是四个对象,我们这里使用了Java的jdk,它帮我们写好了接口信息,我们直接使用就行了,读者要区分对待。相关文章推荐
- java设计模式-观察者模式
- Java设计模式:单态模式,工厂模式,代理模式,观察者模式示例
- java常用类库续3(比较器Comparable、Comparator、观察者设计模式、正则表达式、定时调度)
- java设计模式:观察者模式(Observer)
- JAVA设计模式-观察者模式简单例子
- 使用观察者模式实现Java应用程序设计MVC模式
- Java设计模式_行为模式_观察者模式
- 设计模式---观察者模式(Observer Pattern with java)
- Java设计模式—观察者模式(Observer pattern)
- java 设计模式-观察者模式
- Java设计模式 -- 观察者模式(push方式)
- All About JAVA 关于设计模式中的“观察者模式”
- java设计模式_观察者模式
- Java设计模式-----Observer观察者模式
- Java设计模式之Observer 观察者模式
- Java设计模式 -- 观察者模式(pull方式)
- Java设计模式 Design Pattern:观察者模式 Observer Pattern
- Java设计模式 Design Pattern:观察者模式 Observer Pattern
- 【设计模式】observer观察者模式:模拟java.awt.Button事件监听。
- 设计模式---观察者模式(Observer Pattern with java)