自定义监听器 java
发布日期:2021-06-30 17:50:59 浏览次数:3 分类:技术文章

本文共 2032 字,大约阅读时间需要 6 分钟。

监听器,实际上是一个回调函数,具体一点就是当代码执行到某一行的时候就会调用你预先设置好的语句。

这里我们有:

监听者时刻监听着事件源,当有事件源的时候,监听者就会知道发生了什么事!相似的,警察是监听者,嫌疑犯所干的事是事件源,嫌疑犯干什么事,警察都知道。

总体涉及到:事件、事件源(也就是事件的触发者,这里指嫌疑犯)、监听器(这里指警察);

相应地,我们写几个类或者接口:Event、EventSource、Listener

1、事件

package com.huai.mylisten;public class Event {	private Object source;		public Event(Object source){		this.source = source;	}		public Object getSource(){		return this.source;	}}
2、监听者(需要实现类)

package com.huai.mylisten;public interface Listener {	void onMyEvent(Event event);	}

3、监听者的实现类:

public class MyListener implements Listener{		@Override	public void onMyEvent(Event event) {				System.out.println(event.getSource());	}	}
4、这时候,我们可以暂时写一个测试函数

package com.huai.mylisten;public class TempTest {	public static void main(String[] args) {		Event event = new Event("HelloWorld");		MyListener listener = new MyListener();		listener.onMyEvent(event);	}}
可以看到,我们在main函数中实例化了事件和监听者的对象,同时在里面触发了监听的事件。但是,这个对于真正的监听器是有问题的,因为我们缺少了事件源,也就是嫌疑犯。好,下面我们就写事件源,同时让它来触发事件以及让监听者知道他正在干什么。

5、事件源

package com.huai.mylisten;import java.util.ArrayList;import java.util.List;public class EventSource {	private List
listenerList = new ArrayList<>(); public void addListener(Listener listener){ listenerList.add(listener); } public void doBadThing(){ //嫌疑犯所干的事 Event event = new Event("badthing"); //让所有的监听者(警察)知道,我干了这件事 for(Listener li : listenerList){ li.onMyEvent(event); } }}
从上面的事件源程序中我们可以看出,当嫌疑犯doBadThing的时候,就会有badthing这个事件产生,同时监听者就会知道。最后解释一下“监听者知道”具体指的是什么:从上面的程序中看到,我们直接调用了listener对象的onMyEvent(event)方法,所以,我们可以利用这个,在这个方法里面写我们自己实现的代码,当有doBadThing()的时候,采取相应的处理。这就是监听器。这个EventSource类可以类比一个按钮类,而doBadThing()这个函数便是点击按钮这个动作。每当点击按钮,就会new一个event事件,同时告诉监听者。

6、我们测试一些

package com.huai.mylisten;public class MainTest{	public static void main(String[] args) {			EventSource eventSource = new EventSource();		eventSource.addListener(new MyListener());				eventSource.doBadThing();	}}
注意上面的addListener(listener);也就是把listener对象传进来,所以在EventSource类里面调用的listener.onMyEvent(event)的时候,实际上是调用刚刚传进的listener对象的方法。
如果还没有看懂,欢迎留言,我们一起讨论讨论!

转载地址:https://liangyihuai.blog.csdn.net/article/details/48900693 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:一起学spring--spring事件机制--监听器
下一篇:一起学spring--依赖注入---简单粗暴的例子展示

发表评论

最新留言

路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年04月13日 08时19分16秒