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

观察者模式的使用

发表于: 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

    震惊

    震惊

版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号