参考文章:http://www.jdon.com/jivejdon/thread/37712
引子:
描述:监听器模式是对某种共有操作的监控。当此操作执行时对此操作作相应处理。
包含的元素:
1. 要监控的事件定义
2. 监控该事件的监听器
3. 要监控的事件操作
4. 监控者
元素的职责:
1.定义了要监控事件的时间类型定义,和其它和该事件相关的特殊定义
2.监听器,用于对事件发生后要执行操作的接口定义
3.要监控的事件、操作,对于要监控的事件,他必须要包含被监控事件的注册功能
4.监控者要实现要监控的事件接口,完成时间发生后的操作内容
实例:下面做一个简单的例子
例子描述:
比如论坛里要展示某个发贴用户的发帖总数,当用户没发一次贴,总数就加1。 我们要做的就是每当用户发一次贴的时候再展示页面展示出用户最新的发帖总数。
实战:
1. 事件定义
package com.amdocs.log;
public interface IDomainEvent {
/** 定义事件类型 */
public static final String CREATE_MESSAGE = "CREATE_MESSAGE";
public static final String DELETE_MESSAGE = "DELETE_MESSAGE";
public String getEventType();
}
/**
*
* 创建消息事件
*
*/
public class CreateMessageDomainEvent implements IDomainEvent {
private String eventType = "";
public CreateMessageDomainEvent() {
eventType = IDomainEvent.CREATE_MESSAGE;
}
public String getEventType() {
return this.eventType;
}
}
2. 事件监听器定义
package com.amdocs.log;
/**
*
* 监听器接口
*
* */
public interface IDomainListener {
public void actionPerformed(IDomainEvent event);
}
3. 要监听操作的事件注册方法添加
package com.amdocs.log;
/**
*
* 利用监听器,监听创建消息操作
*
*/
public class CreateMessageDomain {
private IDomainListener listener;
// 监听器注册
// 要让一个被监控的操作要具备能力,他必须支持对此监听器的注册,著有注册了此监听器,他相应的操作才可以被 事件触发者调用到
public void addDomainListener(IDomainListener listener) {
this.listener = listener;
}
public void createMessage(String str) {
System.out.println("开始创建消息,消息是" + str);
messageCountPlus();
System.out.println("消息创建完成,总数加1完成");
}
/** 时间发生后要执行的操作 */
public void messageCountPlus() {
this.listener.actionPerformed(new CreateMessageDomainEvent());
}
}
4. 监控者
package com.amdocs.log;
/**
*
* 监听器模式的必要性
* 1. 对共同的事件操作进行抽象
* 2. 对同一操作进行统一执行
*
* */
public class CreateMesaageWebPage implements IDomainListener {
/**
*
* 创建消息的调用页面 必须实现监听器接口,來實現要被監控操作發生后的事件執行。
*
*/
public void actionPerformed(IDomainEvent event) {
if (event.getEventType().equals(IDomainEvent.CREATE_MESSAGE)) {
System.out.println("创建消息事件被触发--執行将消息总数加1操作");
}
}
/**
* @param args
*/
public static void main(String[] args) {
/** 开始调用操作创建消息 */
CreateMessageDomain domain = new CreateMessageDomain();
/** 注册监听器 */
domain.addDomainListener(new CreateMesaageWebPage());// 监听创建消息操作的 创建消息页面
domain.createMessage("Hello 监听器模式");// 执行要监控的操作
}
}
5. 执行结果
开始创建消息,消息是Hello 监听器模式
创建消息事件被触发--執行将消息总数加1操作
消息创建完成,总数加1完成
分享到:
相关推荐
监听器模式是Java设计模式中的一种行为型模式,主要用于监听某些事件的发生,并在事件发生时自动执行预定义的操作。在实际开发中,监听器模式可以用于多种场景,如UI事件处理、事件广播、异步通知等。 在监听器模式...
"设计模式-画笔程序"这个项目可能是一个利用了多种设计模式来构建的图形用户界面应用,它允许用户进行绘画操作。在这个项目中,我们可以看到设计模式如何增强代码的可维护性、可扩展性和复用性。 首先,我们可以...
《设计模式--基于C#的工程化实现及扩展》是一本深入探讨软件设计模式的书籍,作者王翔通过C#语言来阐述各种经典的设计模式,旨在帮助开发者在实际工程中更好地应用这些模式,提高代码质量和可维护性。本书的重点在于...
装饰器模式(Decorator Pattern)是一种结构型设计模式,它的核心思想是在不修改原有对象的前提下,通过包装(包裹)原对象并扩展其行为来增加功能。这种模式常用于在运行时动态地给对象添加新的职责,使得系统具有...
在软件工程领域,设计模式是解决常见问题的模板或最佳实践,它们被广泛应用于构建可扩展、可维护的系统。本资源聚焦于中南大学设计模式的实验二,主要涉及了策略模式、命令模式和观察者模式这三种经典的设计模式。...
设计模式是软件工程中的一种最佳实践,它是在特定上下文中解决常见问题的模板或蓝图。在Java编程中,设计模式的应用极大地提高了代码的可读性、可维护性和可复用性。《设计模式——Java语言中的应用》这本书深入探讨...
监听器是JavaWeb开发中的一个重要概念,它是一种设计模式的具体实现,主要用于实现Web组件(如Servlet、JSP等)的生命周期事件监听。在本文中,我们将深入了解监听器的概念、分类以及如何在JavaWeb开发中应用监听器...
JSP+servlet+javabean学习 里面有PDF文件对该章节的详细讲解,培训老师才讲的到的,非常详细......资源内容如下: JavaWeb02-request与response.rar JavaWeb03-会话跟踪cookie与...JavaWeb13-过滤器与监听器.rar
根据提供的文件信息,本书《设计模式 For Dummies》是一本介绍设计模式的通俗易懂的指南,适合初学者以及希望深入了解面向对象编程中设计模式应用的开发者。下面将基于此书的内容来概述几种常见的设计模式及其应用...
Listener(监听器) 三、Callback 设计模式的意图 Java 中的 Callback 设计模式是将一段可执行代码作为参数传递给其他代码,期望后者在合适的时候回调(执行)该参数。 四、Callback 模式的详细解释及实际示例 实际...
Java设计模式中的观察者模式(Observer Pattern)是一种对象行为型模式,它定义了一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并被自动更新。这种模式常用于事件处理和实时...
例如,当用户在网页上点击按钮时,按钮作为被观察者,会触发一系列事件,这些事件的监听器(观察者)会接收到通知并执行相应的操作,如弹出对话框、刷新页面等。 6. **优缺点**:优点是实现了对象间的抽象耦合,...
本项目完成的功能类似与迅雷等下载工具...4、自己设计实现设计模式-监听器模式 5、Activity、Service、数据库编程 6、android文件系统 7、缓存 博文地址:http://blog.csdn.net/u010156024/article/details/45362917
这种模式在很多场景下都非常有用,例如在事件驱动系统中,多个监听器可以形成一个处理链,处理各种类型的事件;在权限控制中,多个角色可以构成一个权限链,判断用户是否有权执行某项操作等。 总的来说,责任链模式...
2. 在 Spring 框架中,`org.springframework.context.event.GenericApplicationListenerAdapter` 是一个事件监听适配器,它允许任何实现了特定接口的对象作为事件监听器,即使它们不直接实现 Spring 的 `Application...
这个压缩包文件"设计模式(包含5个设计模式)含源代码报告.rar"显然是一份宝贵的资源,它涵盖了五个核心的设计模式,并附带了详细的类图、源代码以及文档报告,这对于学习和理解设计模式至关重要。 首先,我们要探讨...
3. **迭代器模式**:迭代器模式提供了一种遍历集合元素的方法,而无需暴露其内部结构。它允许顺序访问聚合对象的元素,但不暴露其底层表示。报告可能包含了如何实现一个迭代器接口以及如何在容器类中使用迭代器的...
教程名称: 【动力节点】Javaweb开发视频教程之监听器 动力节点推出的Java视频教程包含两大部分内容:第一部分为监听器相关设计模式的详解。其中包括观察者设计模式、监听器设计模式。第二部分为监听器用法。详细...
4. 装饰器模式:动态地给一个对象添加一些额外的职责,可以扩展功能而不影响其他对象。 5. 代理模式:为其他对象提供一种代理以控制对这个对象的访问。 其次,我们关注“体系结构”。软件体系结构是软件系统的高...