观察者模式是一对多(多对多)关系的模式。
User向EventManager注册了listener,事件触发Trigger类调用了EventManager的处理方法,Manager将事件加到队列中。嵌套类开启线程读取队列并逐一调用listeners中的处理方法。
实现伪代码:
Manager类:
public class EventManager {
private static List listeners = new ArrayList();
private static List queue = new LinkedList();
public void addListener(Class clazz) {
listeners.add(clazz);
}
public void trigger(Object obj) {
queue.add(obj);
}
public static class Solver extends Thread{
public void run() {
while (queue.size() > 0) {
Object obj = queue.getFirst();
for (Iterator iter = listeners.iterator();iter.hasNext()) {
User user = (User)iter.next();
user.invalid(obj);
}
queue.removeFirst();
}
}
}
}
User类:
public class User {
static {
EventManager.addListener(User.class);
}
public void invalid(Object obj) {
// do something
}
}
Trigger类:
public class Trigger {
public void discriminate() {
EventManager.trigger();
}
}
分享到:
相关推荐
观察者模式使用
java观察者模式观察者模式java观察者模式观察者模式java观察者模式观察者模式
Qt设计模式之观察者模式
采用Java语言编写的一个观察者模式实例。观察者模式(有时又被称为模型-视图(View)模式、源-收听者(Listener)模式或从属者模式)是软件设计模式的一种。在此种模式中,一个目标物件管理所有相依于它的观察者物件,...
观察者模式及实例,适合初学者阅读 。。。。。。。。。。。。。。。
Java 观察者模式的浅析 简单地说,观察者模式定义了一个一对多的依赖关系,让一个或多个观察者对象监察一个主题对象。这样一个主题对象在状态上的变化能够通知所有的依赖于此对象的那些观察者对象,使这些观察者...
观察者模式:对象之间多对一依赖的一种设计方案,被依赖的对象为Subject,依赖的对象为Observer,Subject通知Observer变化,这个例子是java内置观察者模式
观察者模式demo 观察者模式demo 观察者模式demo 观察者模式demo
设计模式之观察者模式Java版本实现和UML类设计图
java 设计模式 观察者模式 简单实例 包括测试test类
运用观察者模式及MVC模式的整合,是javaWeb的简单的实现了选民投票
主要介绍了C++设计模式编程中的观察者模式使用示例,观察者模式在被观察者和观察者之间建立一个抽象的耦合,需要的朋友可以参考下
iOS 设计模式 观察者模式
观察者模式Demo,设计模式,观察者模式
js观察者模式列子js观察者模式列子js观察者模式列子js观察者模式列子js观察者模式列子js观察者模式列子js观察者模式列子
设计模式-观察者模式(讲解及其实现代码)
观察者模式(有时又被称为发布(publish )-订阅(Subscribe)模式、模型-视图(View)模式、源-收听者(Listener)模式或从属者模式)是软件设计模式的一种。在此种模式中,一个目标物件管理所有相依于它的观察者物件...
观察者模式小型框架
观察者模式
观察者模式最好的诠释 模式编程中的观察者模式delphi代码