Listener示例
来源:互联网 发布:淘宝上的降头是真的吗 编辑:程序博客网 时间:2024/04/29 03:30
1、创建监听器接口
public interface ListenerInterface {
/**
* 监听初始化操作
* @param sub 被监听对象
*/
public void listenInit(AnotherSubject sub);
/**
* 监听销毁操作
* @param sub 被监听对象
*/
public void listenDestroy(AnotherSubject sub);
}
2、创建被监听类
public class AnotherSubject {
private String name;
private static List<ListenerInterface> listeners = new ArrayList<ListenerInterface>();
/**
* 是否启动监听器
*/
private boolean isListenerOn = true;
public AnotherSubject(String name) {
this.name = name;
}
/**
* 启动监听器
*
*/
public void setListenerOn() {
this.isListenerOn = true;
}
/**
* 关闭监听器
*
*/
public void setListenerOff() {
this.isListenerOn = false;
}
/**
* 添加监听器
*
* @param listener
*/
public static void addListner(ListenerInterface listener) {
listeners.add(listener);
}
/**
* 移除指定监听器
*
* @param listener
* 监听器
*/
public static void removeListner(ListenerInterface listener) {
listeners.remove(listener);
System.out.println("移除监听器{" + listener + "}");
}
/**
* 初始化操作,激活监听器的相应操作
*
*/
public void init() {
System.out.println("初始化[" + name + "].....");
if (isListenerOn) {
for (ListenerInterface listner : listeners) {
listner.listenInit(this);
}
}
}
/**
* 销毁操作,激活监听器的相应操作
*
*/
public void destroy() {
System.out.println("销毁[" + name + "].....");
if (isListenerOn) {
for (ListenerInterface listner : listeners) {
listner.listenDestroy(this);
}
}
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
3、测试监听器效果
public class ListenerTester {
public static void main(String[] args) {
ListenerInterface initListener = new ListenerInterface(){
private String listnerName = "监听器init";
public void listenDestroy(AnotherSubject sub) {
System.out.println(listnerName+"监听到对象"+sub.getName()+"销毁");
}
public void listenInit(AnotherSubject sub) {
System.out.println(listnerName+"监听到对象"+sub.getName()+"创建");
}
};
ListenerInterface destroyListener = new ListenerInterface(){
private String listnerName = "监听器Destroy";
public void listenDestroy(AnotherSubject sub) {
System.out.println(listnerName+"监听到对象"+sub.getName()+"销毁");
}
public void listenInit(AnotherSubject sub) {
System.out.println(listnerName+"监听到对象"+sub.getName()+"创建");
}
};
AnotherSubject.addListner(initListener);
AnotherSubject.addListner(initListener);
AnotherSubject.addListner(initListener);
AnotherSubject.addListner(destroyListener);
AnotherSubject.addListner(destroyListener);
AnotherSubject sub = new AnotherSubject("被监听的对象");
sub.init();//初始化
AnotherSubject.removeListner(initListener);//移除监听器
AnotherSubject.removeListner(initListener);
sub.setListenerOff();//关闭监听器
sub.destroy();
sub.setListenerOn();//启动监听器
sub.destroy();
}
}
4、输出结果
初始化[被监听的对象].....
监听器init监听到对象被监听的对象创建
监听器init监听到对象被监听的对象创建
监听器init监听到对象被监听的对象创建
监听器Destroy监听到对象被监听的对象创建
监听器Destroy监听到对象被监听的对象创建
移除监听器{cn.ac.sict.listners.ListenerTester$4@b8df17}
移除监听器{cn.ac.sict.listners.ListenerTester$4@b8df17}
销毁[被监听的对象].....
销毁[被监听的对象].....
监听器init监听到对象被监听的对象销毁
监听器Destroy监听到对象被监听的对象销毁
监听器Destroy监听到对象被监听的对象销毁
- Listener示例
- Servlet Listener 简单示例
- Android View添加 Listener 小技巧示例
- Oracle Listener 设置密码 示例 说明
- Android View 添加Listener小技巧示例
- listener
- Listener
- Listener
- listener
- Listener
- LISTENER
- listener
- Listener
- Listener
- Listener
- listener
- Listener
- lISTENER
- include <cstring>,include <string> include <string.h>的区别
- linux常见命令的列表
- 四种能力
- Box2D v2.1.0用户手册翻译 - 第02章 Hello Box2D
- 强制转换CSting为CHAR*时候出现错误的解决方式
- Listener示例
- 浅谈DB
- New starting
- SQL 语言
- 心得与吐槽——十天痛苦调试的总结
- 专注核心功能
- JavaBean组件在JSP文档中的应用(第14章笔记)
- 泛型字典类比较
- PHP面向对象中部分常用的英语