观察者模式是GOF中所介绍的一种常用的设计模式,本文将介绍使用AspectJ利用AOP来实现观察者模式,并通过一个简单的示例说明它的用法。
以下是AOP实现观察者模式的UML图
在AOP版本中,Subject和Observer接口的成员将由抽象方面ObserverProtocol实现,而其中最关键的一点是抽象pointcut stateChange,它将由具体子方面根据不同的应用需求来定义。要实现观察者模式,需要三个基本文件,分别是Subject.java,Observer.java,ObserverProtocol.java
interface Subject{ //主题接口
public void addObserver(Observer observer);
public void removeObserver(Observer observer);
public Collection getObservers();
}
interface Observer{ public void update();}//观察者接口
public abstract aspect ObserverProtocol{//抽象观察者协议方面