当前位置:首页 > 开发 > 编程语言 > 编程 > 正文

观察者模式的使用

发表于: 2012-04-26   作者:czj4451   来源:转载   浏览次数:
摘要: 观察者模式是一对多(多对多)关系的模式。 User向EventManager注册了listener,事件触发Trigger类调用了EventManager的处理方法,Manager将事件加到队列中。嵌套类开启线程读取队列并逐一调用listeners中的处理方法。 实现伪代码: Manager类: public class EventManager { priva
观察者模式是一对多(多对多)关系的模式。

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();
	}
}

观察者模式的使用

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
一、背景 系统有三个模块,分别为:组卷、答题卡、阅卷。其功能描述如下: 1、组卷:选择试题并生成
1.概念 观察者模式(有时又被称为发布-订阅Subscribe>模式、模型-视图View>模式、源-收听者Li
  设计模式,对程序员来说是一个坎,想在程序员这条路走得更远,设计模式是你的必修课。从大学时
以【猫叫、老鼠跑、主人醒】为例子,使用 javascript 来实现 观察者模式 (有在线演示) 2013-06-24
1 类图   观察者模式(Observer Pattern)也叫做发布订阅模式(Public/Subscribe)。    2 代码
1. 具体的ConcreteSubject里有个IObserver的List 2. 抽象的ISubject里定义了针对IObserver的几个方
观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状
观察者(Observer)模式:是对象的行为模式,又叫做发布-订阅(Publish/Subscribe)模式、模型-视图
文章摘抄至 http://www.cnblogs.com/java-my-life/archive/2012/05/16/2502279.html http://blog.cs
观察者模式的优点: 观察者模式定义了一种一对多的依靠关系,让多个观察者对象同时监听某一个主题对
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号