1: swt还是android 都有 点击一个按钮,注册监听,等事件监听的模式:
首先有个事件,然后有处理事件的监听。和观察者模式来说差别还是蛮大的
简单的实现:http://abruzzi.iteye.com/blog/266027
事件监听器模式(一个简单的例子)
在GUI程序设计中,在设计时通常不会知道用户的动作什么时候会发生,如用户可能点击某一
个按钮,也可能不点击,而且点击按钮的时机在运行时才可能知道。如果用传统的程序控制
方式,则很难做到准确的响应。通常这种情况或者类似的情况下,我们可以使用事件/监听器模式。
将一个监听器(listener)与特定的控件(如按钮等)绑定起来,当发生用户点击等事件(Event)时,
调用监听器的处理方法,从而响应用户的动作。是为事件/监听器模式。
事件有很多种,而且事件发生的时序是不确定的。可以简单的定义一个事件的接口,如下例:
- interface Event{
- static int event1 = 0;
- static int event2 = 1;
- static int event3 = 2;
- ...
- int getEventType();
- }
一个监听器的接口的一种可能形式:
- interface listener{
- void handleEvent(Event event);
- }
实现监听器接口的类可以根据事件的类型作出具体的响应方式如:可以开展给用户自己实现()
- class ListenerImpl implements Listener{
- some other methods of this implementation;
- ...
- void handleEvent(Event event){
- switch(event.getEventType()){
- case Event.event1:
- doSomething();
- break;
- case Event.event2:
- doSomethingElse();
- break;
- default:
- break;
- }
- }
- GUIThread thread = new GUIThread(); // 一般不放到这里 在外面注册
- thread.setListener(this);//注册监听器
- ...
- }
在GUI的主流程中,需要有一个Event的实现者,和一个发起事件的组件,如:
- class EventImpl implements Event{
- private int type;
- public EnentImpl(int type){
- this.type = type;
- }
- }
- class GUIThread{
- private Listener listener;
- public void setListener(Listener listener){
- this.listener = listener;
- }
- public void execute(){
- if(this.listener != null){
- Event event = new EventImpl(type);//触发了某事件
- listener.handleEvent(event);
- }
- }
- }
当然,这个实现只是一个原理性的描述,应该可以很容易根据这个描述作出自己的实现。关于事件的处理以及事件类型的定义等可以完全根据自己的需求定制。
相关推荐
主要介绍了Java设计模式之监听器模式,结合实例形式较为详细的分析了java设计模式中监听器模式的概念、原理及相关实现与使用技巧,需要的朋友可以参考下
Java简单几个类实现万能事件总线,采用享元模式和监听器模式。 使用方法很简单,直接EventCenter.get().addListener(key,()->{...你的代码快...});就行, 无论在哪,只要执行EventCenter.get().sendMessage(key,...
NULL 博文链接:https://qiaokeli.iteye.com/blog/1782656
这种机制基于观察者模式,由事件(ApplicationEvent)、事件监听器(ApplicationListener)和事件广播器(ApplicationEventMulticaster)三个主要组成部分构成。 事件是发生的动作或事情,其核心是ApplicationEvent...
三个有关监听者的实例,一定要理解透哦。 如果工作两年,还没开始学设计模式,说明你out了哦
android4.2以上系统飞行模式开启、关闭以及监听,包括WiFi的开关以及监听
Martin Fowler在自己网站上写了一篇LMAX架构的文章,在文章中他...Disruptor是一个高性能的异步处理框架,或者可以认为是最快的消息框架(轻量的JMS),也可以认为是一个观察者模式的实现,或者事件监听模式的实现。
做好的事件监听器1
基于MFC实现的消息监听机制,利用了设计模式中的观察者模式,对线程间的同步做了优化,以及可以选择消息的发送类型:同步或异步发送。对于监听者而言在注册监听的同时可以选择监听的消息类型,避免了发送者发送的...
Producer:生产者,泛指通过Disruptor发布事件的用户代码(实际业务代码,而并发框架代码)生成Event数据。 Event:事件,从生产者到消费者过程中的数据单元。由用户定义代码。 EventHandler:消费者,代表...
Java事件监听模式: 1、事件 ( extends EventObject):定义事件,继承EventObject的属性和方法 2、监听器接口 ( extends EventListener):继承EventListener接口 3、注册器:实现注册器操作方法、事件广播方法,定义...
两个简单的关于事件监听者的例子,另一个是类似于button的例子。
NULL 博文链接:https://coco-young.iteye.com/blog/1275485
基于 RBAC与监听器机制设计作业管理软件
详细讲解了java中的监听机制以及观察者设计模式
一个java监听器的实现demo,即观察者设计模式实现
在android下运行,通过SOCK_RAW监听网卡数据,并获取本地和远端的mac与ip地址。
技术: 1. spring事件驱动(ApplicationEventPublisher) 2. 策略模式处理事件 目的: 1. 通过event,代码逻辑异步处理 2. 通过策略模式,构建具体监听实现 3. 解耦 4. 容错(降低代码块错误风险)
蓝牙自组个人网监听模式下分散网调度算法.pdf
基于主动发送/串口监听模式的实时数据采集.pdf