`
iluoxuan
  • 浏览: 583245 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

事件监听模式

 
阅读更多

1: swt还是android 都有 点击一个按钮,注册监听,等事件监听的模式:

首先有个事件,然后有处理事件的监听。和观察者模式来说差别还是蛮大的

简单的实现:http://abruzzi.iteye.com/blog/266027

 

事件监听器模式(一个简单的例子)


在GUI程序设计中,在设计时通常不会知道用户的动作什么时候会发生,如用户可能点击某一
个按钮,也可能不点击,而且点击按钮的时机在运行时才可能知道。如果用传统的程序控制
方式,则很难做到准确的响应。通常这种情况或者类似的情况下,我们可以使用事件/监听器模式。

将一个监听器(listener)与特定的控件(如按钮等)绑定起来,当发生用户点击等事件(Event)时,
调用监听器的处理方法,从而响应用户的动作。是为事件/监听器模式。

事件有很多种,而且事件发生的时序是不确定的。可以简单的定义一个事件的接口,如下例:

Java代码   收藏代码
  1. interface Event{  
  2.     static int event1 = 0;  
  3.     static int event2 = 1;  
  4.     static int event3 = 2;  
  5.     ...  
  6.     int getEventType();  
  7. }  

 



一个监听器的接口的一种可能形式:

Java代码   收藏代码
  1. interface listener{  
  2.     void handleEvent(Event event);  
  3. }  

 



实现监听器接口的类可以根据事件的类型作出具体的响应方式如:可以开展给用户自己实现()

Java代码   收藏代码
  1. class ListenerImpl implements Listener{  
  2. some other methods of this implementation;  
  3. ...  
  4. void handleEvent(Event event){  
  5.     switch(event.getEventType()){  
  6.         case Event.event1:  
  7.             doSomething();  
  8.             break;  
  9.         case Event.event2:  
  10.             doSomethingElse();  
  11.             break;  
  12.         default:  
  13.             break;  
  14.     }  
  15. }  
  16.   
  17. GUIThread thread = new GUIThread();   // 一般不放到这里 在外面注册
  18. thread.setListener(this);//注册监听器  
  19. ...  
  20. }  

 


在GUI的主流程中,需要有一个Event的实现者,和一个发起事件的组件,如:

Java代码   收藏代码
  1. class EventImpl implements Event{  
  2.     private int type;  
  3.     public EnentImpl(int type){  
  4.         this.type = type;  
  5.     }  
  6. }  
  7.   
  8. class GUIThread{  
  9.     private Listener listener;  
  10.     public void setListener(Listener listener){  
  11.         this.listener = listener;  
  12.     }  
  13.      
  14.     public void execute(){  
  15.         if(this.listener != null){  
  16.             Event event = new EventImpl(type);//触发了某事件  
  17.             listener.handleEvent(event);  
  18.         }  
  19.     }  
  20. }  

 

当然,这个实现只是一个原理性的描述,应该可以很容易根据这个描述作出自己的实现。关于事件的处理以及事件类型的定义等可以完全根据自己的需求定制。

分享到:
评论

相关推荐

    Java设计模式之监听器模式实例详解

    监听器模式是Java设计模式中的一种行为型模式,主要用于监听某些事件的发生,并在事件发生时自动执行预定义的操作。在实际开发中,监听器模式可以用于多种场景,如UI事件处理、事件广播、异步通知等。 在监听器模式...

    java事件监听模式实现万能事件总线.zip

    Java简单几个类实现万能事件总线,采用享元模式和监听器模式。 使用方法很简单,直接EventCenter.get().addListener(key,()->{...你的代码快...});就行, 无论在哪,只要执行EventCenter.get().sendMessage(key,...

    windchill交流第三篇:Windchill中的事件监听

    在软件开发中,事件监听是一种设计模式,它允许代码注册到一个或多个事件源,以便在这些事件源触发特定事件时得到通知并做出反应。在Windchill中,事件监听主要应用于工作流程、数据变更、用户交互等场景,确保系统...

    android全局事件监听器

    在Android开发中,全局事件监听器是一种非常实用的设计模式,它允许开发者在整个应用程序范围内监听特定的事件,而无需在每个需要响应的类中都添加监听代码。标题中的"android全局事件监听器"指的是一个实现此类功能...

    java自定义事件监听

    在Java编程语言中,事件监听是构建用户界面(UI)应用程序的一个关键概念。它允许程序对用户的行为作出响应,如点击按钮、选择菜单项或在文本框中输入文本。Java自定义事件监听允许开发者创建自己的事件类型并相应地...

    JMS调用IBM MQ监听模式

    标题“JMS调用IBM MQ监听模式”涉及的是Java消息服务(Java Message Service,简称JMS)与IBM WebSphereMQ(通常简称为IBM MQ)之间的交互,特别是在消息监听模式下的应用。这种模式允许应用程序被动地接收来自MQ的...

    android 事件监听机制

    通过发布和订阅模式,可以实现组件之间的事件通信,增强代码的灵活性。 6. **在飞机位置控制中的应用** 在描述中提到的飞机位置控制,可能涉及到游戏或者其他互动应用。开发者可以创建一个自定义View,监听用户的...

    安卓事件监听实例

    事件驱动编程则是安卓框架的核心设计模式之一。在安卓系统中,主线程负责处理UI更新和用户事件。当用户与屏幕交互时,系统会生成一个事件并将其放入事件队列。主循环(Looper)会取出事件并分发给相应的事件处理函数...

    java监听器的实现和原理详解

    监听器模式的主要思想是将事件源和事件处理器分离,使得事件源可以独立于事件处理器,提高了系统的灵活性和可扩展性。 Java监听器的实现可以分为三个部分:事件源、事件对象和事件监听器。事件源是指产生事件的对象...

    gridview+事件监听

    在这个“gridview+事件监听”的主题中,我们将深入探讨如何在GridView中实现事件监听,特别是针对单击和长按事件的处理,以及如何在GridView中更新图片。 首先,我们需要了解GridView的基本使用。GridView继承自...

    Passive Event Listeners - 被动事件监听器1

    然而,被动事件监听器引入了一个新的模式,即`{passive: true}`选项,它允许开发者声明事件处理函数不会调用`preventDefault()`来阻止事件的默认行为。这样做是为了让浏览器知道它可以优化相关的事件处理,比如在...

    spring的Applicationcontext对事件的监听,实现类似MQ的效果

    在Spring框架中,`ApplicationContext`不仅是一个容器,用于管理Bean的生命周期和依赖注入,它还提供了事件发布和监听的功能。这个特性使得Spring应用能够实现组件间的异步通信,类似于消息队列(MQ)的工作模式。...

    java监听者模式

    Java监听者模式是一种设计模式,它允许对象在特定事件发生时执行相应的操作。在这个场景中,我们有两个关于事件监听者的示例,其中一个可能是与按钮(button)相关的。监听者模式属于行为设计模式,它在Java AWT和...

    深入探索Spring事件监听机制:技术与应用

    Spring事件监听机制是Spring框架中的一个重要特性,它基于经典的观察者模式,允许应用程序组件之间进行松耦合的通信。在Spring中,事件监听机制由三部分组成:事件(ApplicationEvent)、事件监听器(Application...

    java监听者模式三个实例

    在这个"java监听者模式三个实例"中,我们将深入探讨如何使用监听者模式来实现事件驱动的编程。 1. **监听者模式的基本概念** - **观察者(Observer)**:即监听者,它定义了接口用于接收被观察者的通知。 - **被...

    监听器模式(生产消费模型)

    监听器模式是一种设计模式,属于行为模式类别,它在软件工程中被广泛应用于事件处理,尤其是在多线程和异步编程中。这个模式的核心思想是定义一个对象接口,用于监听和处理特定事件的发生,使得多个对象可以注册为...

    android Button监听事件的几种类型

    对于Button的监听事件,开发者通常需要实现多种类型的监听器来处理不同类型的用户行为。本篇文章将深入探讨Android Button常用的监听事件类型。 1. **OnClickListener**:这是最基础的按钮监听事件,用于处理单击...

    Android代码(事件监听).zip

    - 更多自定义事件:通过发布/订阅模式实现自定义事件的监听。 在"Pro04(事件监听)"项目中,可能包含了以上事件监听的示例代码,通过学习和分析这些代码,你可以深入理解Android事件监听机制,并提升你的应用交互...

    event.rar-Spring事件监听机制

    它基于Java的观察者模式,其中事件是被观察的对象,而事件监听器是注册来接收这些事件的对象。 2. **事件类与事件发布** 当一个组件完成特定操作后,可以创建并发布一个自定义的事件类,这个类通常继承自Spring的`...

    C#自定义事件监听实现方法

    在C#编程中,事件是实现对象间通信的一种机制,特别是在设计模式中,如发布-订阅(Publish-Subscribe)模式。事件监听允许一个对象(订阅者)关注另一个对象(发布者)的状态变化,并在特定事件发生时执行相应操作。...

Global site tag (gtag.js) - Google Analytics