知识点:
1.观察者模式为了解决什么问题?
2.观察者模式的组成部分。
3.简单的代码实现。
1.观察者模式为了解决什么问题?
现在这里有个实际的问题,微博用户A,B,C,D。用户B,C,D需要当用户A发了微博以后去评论。怎么用观察者模式来解决这个问题了?观察者模式能在A发布微博以后,提醒B,C,D 用户A发来一篇微博,你们可以去评论了。
2.观察者模式的组成部分。
三个部分组成:
a.事件,这里例子中就是用户A发来一个微博
b.事件源,这里例子中就是微博用户A,她可以发微博,删微博,更新微博等等
c.监听者,这里例子中就是微博用户B,C,D,他们想要知道用户A的各种动态
3.简单的代码实现。
下面的代码实现都是伪代码,主要为了帮助理解观察者模式。
事件代码:
class Event{
SEND, DELETE, UPDATE
}
事件源:
class EventSource {
List<Listener> listenerList = new ArrayList<Listener>();
notifyListener(Event) {
//这里遍历监听者,并且调用监听者的方法
}
}
class Listener {
void doSometing() {
//评论,点赞
}
}
三个部分的代码都在这了,看一下他们是怎么运作的。
a.首先创建监听者对象B,C,D 并且将它们放到时间源的listenerList中。
b.事件源发出事件,通过notifyListener方法,遍历监听者。
c.监听者执行doSometing的方法。