`

观察者模式的使用

阅读更多
观察者模式是一对多(多对多)关系的模式。

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观察者模式观察者模式

    使用观察者模式通常包括以下步骤: 1. 定义`Observable`子类:创建一个类继承自`Observable`,并添加具体业务逻辑。 2. 定义`Observer`实现类:创建一个或多个类实现`Observer`接口,定义`update`方法处理通知。 3. ...

    设计模式实现——观察者模式

    观察者模式(Observer Pattern)是软件设计模式中的一种行为模式,...同时,现代编程语言和框架(如React的生命周期方法、Angular的事件机制等)也内置了观察者模式的概念,使得开发者可以更方便地使用和理解这一模式。

    设计模式-观察者模式(讲解及其实现代码)

    观察者模式,也被称为发布-订阅模式,是软件设计中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的...在实际项目中,正确使用观察者模式可以有效地管理组件间的交互,实现高效且易于维护的代码结构。

    Java内置观察者模式

    观察者模式(Observer Pattern)是设计模式中的一种行为模式,它允许一个对象,当其状态发生改变时,能够自动通知所有依赖它的其他对象。在Java中,这种模式已经被内置到语言核心,使得开发者可以轻松地实现事件驱动...

    设计模式-观察者

    7. **其他变体**:除了基本的观察者模式,还有复合观察者模式,允许一个观察者对象包含多个观察者,以及异步观察者模式,通知过程在不同的线程中执行,以避免阻塞主线程。 在实际开发中,理解并熟练运用观察者模式...

    Qt设计模式之观察者模式

    本篇文章将深入探讨Qt中的观察者模式(Observer Pattern),这是一种行为设计模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。 观察者模式的核心...

    java 设计模式 观察者模式 简单实例 包括测试test类

    观察者模式(Observer Pattern)是软件设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式常用于实现事件驱动或者发布...

    iOS 设计模式 观察者模式

    在`ObserverPattern-master`这个压缩包中,可能包含了一个关于观察者模式的示例项目,里面可能通过创建自定义的观察者和被观察者类,展示了如何在不使用系统提供的通知或KVO的情况下实现观察者模式。通过分析和学习...

    观察者模式模版和例子

    使用观察者模式的优点包括: 1. **松耦合**:主题和观察者之间的关系是松耦合的,这意味着主题可以独立于观察者进行修改,反之亦然。 2. **可扩展性**:添加新的观察者或主题非常简单,因为它们只需遵循观察者模式的...

    观察者模式练习

    观察者模式(Observer Pattern)是软件设计...在Java中,通过内置的`Observable`和`Observer`类,可以轻松实现和使用观察者模式。在"观察者模式练习"中,我们可以通过`ObserverTest`来体验和理解这一模式的实际运用。

    运用MVC模式及观察者模式的java小程序

    在这个名为“运用MVC模式及观察者模式的java小程序”的项目中,我们重点探讨了两种经典的设计模式:Model-View-Controller(MVC)模式和Observer(观察者)模式。这两种模式在JavaWeb开发中扮演着至关重要的角色。 ...

    设计模式之观察者模式

    观察者模式是面向对象设计中的一种...在Java中,`java.util.Observable`和`java.util.Observer`是内置的观察者模式实现,而在.NET框架中,可以使用`System.ComponentModel.INotifyPropertyChanged`接口实现类似功能。

    设计模式--观察者模式java例子

    下面将详细介绍这两个关键组件以及如何使用它们来实现观察者模式。 1. `Observer`接口: - `Observer`接口提供了`update`方法,当被观察的对象状态发生变化时,该方法会被调用。通常,观察者会在这个方法中执行...

    使用MFC实现观察者模式(Observer)同时兼顾多窗口之间传值

    在实际应用中,`TestNotify`可能是一个测试程序,用于演示如何在MFC中使用观察者模式进行事件监听和多窗口之间的值传递。这个程序可能包含了创建观察者和被观察者对象,添加观察者到被观察者列表,以及在消息触发时...

    设计模式之观察者模式Java实现

    观察者模式(Observer Pattern)是软件设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式常用于事件驱动的系统或者...

    观察者模式的一个应用

    ### 观察者模式概述与应用 #### 一、观察者模式定义 观察者模式是一种常用的软件设计模式,主要用于处理对象间的依赖关系。在这种模式下,一个对象(称为“主题”或“被观察者”)负责维护一组依赖于它的对象...

Global site tag (gtag.js) - Google Analytics