设计模式之监听器模式
事件处理模型:
组件(事件源)不处理自己的事件,而是将事件处理托付给外部的处理实体(监听器,
这样的事件处理模型称为事件的 授权处理模型。
不同的事件,能够交由不同类型的监听器去处理
事件源:
提供订阅与取消监听者的方法,并负责维护监听者列表,发送事件给监听者
监听者:
每一个监听者实现接口来接收事件,并负责从事件源订阅与取消订阅
图示:
demo
事件源:
Context:
package com.demo.event;import java.util.ArrayList; import java.util.List;public class Context {private static List<Listener> list=new ArrayList<Listener>();public static void addListener(Listener listener){list.add(listener);}public static void removeListener(Listener listener){list.remove(listener);}public static void sendNotification(Event event){for(Listener listener:list){listener.onChange(event);}} }
监听者:
Listener
package com.demo.event;public interface Listener {public void onChange(Event event); }
MyListener
package com.demo.event;public class MyListener implements Listener {@Overridepublic void onChange(Event event) {switch(event.getType()){case Event.INSTALLED:System.out.println("do install...");break;case Event.STARTED :System.out.println("do started...");break;case Event.RESOLVED :System.out.println("do resolved...");break;case Event.STOPPED :System.out.println("do stopped...");break;case Event.UNRESOLVED :System.out.println("do unresolved...");break;case Event.UNINSTALLED :System.out.println("do uninstalled...");break;default:throw new IllegalArgumentException();}}}
事件:
package com.demo.event;public class Event {public static final int INSTALLED =1; public static final int STARTED =2; public static final int RESOLVED =3; public static final int STOPPED =4; public static final int UNRESOLVED =5; public static final int UNINSTALLED =6;private int type ;private Object source ;public Event(int type, Object source) {this.type = type;this.source = source;}public int getType() {return type;}public Object getSource() {return source;} }
測试:
package com.demo.event;public class EventTest {/*** @param args*/public static void main(String[] args) {Listener listener=new MyListener();//加入监听者Context.addListener(listener);//模拟bundle安装完毕事件触发Context.sendNotification(new Event(Event.INSTALLED, new MyBundle()));}}
设计模式之监听器模式相关推荐
- 软件设计模式-行为型模式
行为型模式 行为型模式是对在不同的对象之间划分责任和算法的抽象化 通过行为型模式,可以更加清晰地划分类与对象的职责,并研究系统在运行时实例对象之间的交互.在系统运行时,对象并不是孤立的,他们可以通过相 ...
- java备忘录模式应用场景_图解Java设计模式之备忘录模式
图解Java设计模式之备忘录模式 游戏角色状态恢复问题 游戏角色有攻击力和防御力,在大战Boss前保存自身的状态(攻击力和防御力),当大战Boss后攻击力和防御力下降,从备忘录对象恢复到大战前的状态. ...
- 一看就懂!【英雄联盟锐雯】与 Python 详解设计模式之门面模式
[网络配图] 设计模式(Design Pattern)是一套被反复使用.多数人知晓的.经过分类的.代码设计经验的总结.使用设计模式的目的:为了代码可重用性.让代码更容易被他人理解.保证代码可靠性.设计 ...
- Python设计模式-装饰器模式
Python设计模式-装饰器模式 代码基于3.5.2,代码如下; #coding:utf-8 #装饰器模式class Beverage():name = ""price = 0.0 ...
- Python设计模式-中介者模式
Python设计模式-中介者模式 代码基于3.5.2,代码如下; #coding:utf-8 #中介者模式class colleague():mediator = Nonedef __init__(s ...
- Python设计模式-职责链模式
Python设计模式-职责链模式 代码基于3.5.2,代码如下; #coding:utf-8 #职责链模式class Handler():def __init__(self):self.success ...
- Python设计模式-享元模式
Python设计模式-享元模式 基于Python3.5.2,代码如下 #coding:utf-8class Coffee:name = ""price = 0def __init_ ...
- 建造者模式java_java设计模式3——建造者模式
java设计模式3--建造者模式 1.建造者模式介绍: 建造者模式属于创建型模式,他提供了一种创建对象得最佳方式 定义: 将一个复杂对象的构建和与它的表示分离,使得同样的构建过程可以创建不同的表示 主 ...
- Java设计模式之策略模式与状态模式
一.策略模式定义 定义:策略模式定义了一系列的算法,并将每一个算法封装起来,而且使他们之间可以相互替换,策略模式可以在不影响客户端的情况下发生变化. 好了,定义看看就完了,我知道你很烦看定义. 二.策 ...
最新文章
- 华为4G路由器成软银快速部署宽带业务新利器
- numpy归一化_使用numpy 高效实现K-Means聚类
- 【mysql】配置 选项文件
- 向量几何在游戏编程中的使用系列二之2-D物体间的碰撞响应
- 会计电算化的重要物质基础计算机和,湖北工业大学工程技术学院会计电算化管理办法...
- mysql dml ddl优先级_MYSQL入门操作和常规DML、DDL、DQL使用
- python的with as语句_python with (as)语句
- unity 自动生成脚本
- 台式计算机配置清单4500,4500组装电脑配置清单
- 如何裁剪动图的边框?教你一键在线裁剪动图
- Keras中那些学习率衰减策略
- I/O模型(同步、非同步、阻塞、非阻塞)总结
- 在WordPress中重新排序博客文章的4种简单方法(循序渐进)
- 【分享】超级菜鸟另类玩swf反汇编
- Android开发学习之Intent具体解释
- Android 获取Usb设备类型
- LeetCode hot-100 简单and中等难度,91-100.
- Windows Media Encode 9简介及SDK
- 一缕黑暗中的火光-----------类图--------------优雅的建模语言
- MM买裤子杀价全过程