观察者模式
介绍:
在观察者模式中一般有一个主题对象(这个主题对象也叫作被观察者)和多个观察者。
他们的关系是:多个观察者依赖于一个被观察者。当被观察者的状态发生变化时,会通知所有观察者,观察者们就会随之更新自己的状态。
案例:
微博的博主(被观察者)被多个用户(观察者)关注,当博主发微博的时候,会通知所有关注他的用户收到这条微博。
观察者模式主要分为两个部分,观察者部分和被观察部分。本案例中的观察者部分有观察者接口和实现该接口的类,被观察者部分有被观察者接口和实现该接口的类。
代码如下
先介绍两个接口
/**
* 观察者接口
*/
public interface Observer {
/**
* 更新观察者自身的状态
* @param message
*/
public void update(String message);
}
上面的观察者接口里有一个抽象方法,功能描述为更新观察者自身的状态,该方法是观察者角色必然要用到的。为了案例的演示,为方法定义了一个字符串类型的参数。
/**
* 被观察者(主题对象)接口
* @author Administrato
*/
public interface Subject{
/**
* 为主题对象添加观察者
*/
public void attachObserver(Observer observer);
/**
* 移除主题对象的观察者
*/
public void detachObserver(Observer observer);
/**
* 通知主题对象的所有观察者更新状态
*/
public