全面解析全面解析Java观察者模式观察者模式
主要帮助大家全面解析Java观察者模式,了解java设计模式中的观察者模式,感兴趣的小伙伴们可以参考一下
【正文】
一、观察者模式的定义:一、观察者模式的定义:
简单地说,观察者模式定义了一个一对多的依赖关系,让一个或多个观察者对象监听一个主题对象。这样一来,当被观察者状
态发生改变时,需要通知相应的观察者,使这些观察者对象能够自动更新。例如:GUI中的事件处理机制采用的就是观察者模
式。
二、观察者模式的实现:二、观察者模式的实现:
Subject(被观察的对象接口):规定ConcreteSubject的统一接口 ; 每个Subject可以有多个Observer;ConcreteSubject(具体
被观察对象):维护对所有具体观察者的引用的列表 ;–状态发生变化时会发送通知给所有注册的观察者。Observer(观察者
接口):规定ConcreteObserver的统一接口;定义了一个update()方法,在被观察对象状态改变时会被调用。
ConcreteObserver(具体观察者):维护一个对ConcreteSubject的引用;特定状态与ConcreteSubject同步;实现Observer接
口,update()方法的作用:一旦检测到Subject有变动,就更新信息。
图表描述如下:
注:在被观察者类中需要有一个集合维护所有观察者。
三、举例说明:三、举例说明:
【方案一】:【方案一】:自己定义接口或者类来实现观察者模式。
步骤如下:
(1)定义被观察者所具有的接口:
package com.vince.observer;
public interface Observable {
//注册为一个观察者
public void registerObserver(Observer observer);
//取消观察者
public void removeObserver(Observer observer);
//通知所有观察者更新信息
public void notifyObservers();
}
(2)定义具体的被观察者:杯子
package com.vince.observer;
import java.util.Vector;
public class Cup implements Observable{
//被观察者维护的一个观察者对象列表
private Vector<Observer> vector = new Vector<Observer>();
private float price;
public Cup(float price){
this.price = price;
}