引言
本文主要介绍观察者模式,它是一种行为类的设计模式。适合一对多的适用场景。
- 观察者模式介绍
- 代码示例
- 总结
一、观察者模式介绍
观察者模式是一种对象行为模式。它定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新
所谓观察这模式,按照我自己的理解就是打小报告的模式。估计大家都记得我们上小学的时候班里面总有些人喜欢喝老师打小报告班级里有点什么小动静,老师都会通过打小报告的人获取到消息。
二、代码示例
观察者模式的主要设计四个角色,如下所示:
- 抽象被观察者;
- 被观察者实现;
- 抽象观察者;
- 观察者实现;
UML类图如下所示:
抽象被观察者:
interface ISubject {
List<Observer> addObserver(Observer observer);
void notifyObserver();
}
被观察者实现:
public class SubjectImpl implements ISubject {
List<Observer> observerList = Lists.newArrayList();
@Override
public List<Observer> addObserver(Observer observer) {
return observerList.add(observer);
}
@Override
public void notifyObserver() {
for(Observer observer : observerList ) {
observer.updateSomething();
}
}
}
抽象观察者:
interface IObserver{
void updateSomething();
}
观察者实现:
public class ObserverImpl implements IObserver{
@Override
public void updateSomething() {
System.out.println("被观察者做了啥,我得做啥");
}
}
使用场景代码:
public class Main{
public static void main(String[] args) {
IObserver observer = new ObserverImpl();
ISubject subject = new SubjectImpl();
subject.addObserver(observer);
subject.notifyObserver();
}
}
三、总结
观察者模式使我们在日常项目实践中比较常用的设计模式,它体现了代码模块的高内聚低耦合的特性,我们可以方便的使用它进行代码扩展。