java 简单监听器_2019-02-26 Java监听器简单练手示例

业务逻辑:孩子在吃饭前需要洗手,所以我们需要监听孩子的吃饭事件,当吃饭事件发生时,执行监听事件

1 孩子类

package listen;

import java.util.ArrayList;

import java.util.List;

public class Child {

private String name;

private List listeners = new ArrayList();

//为该对象注册监听

public void addListener(Listener listener) {

this.listeners.add(listener);

}

public void eat() {

//遍历监听集合

for(Listener listener : listeners) {

//对相应的监听执行不同的逻辑

if(listener instanceof RemaindWashListener) {

RemaindWashListener washingHandsListener = (RemaindWashListener)listener;

//调用监听中的处理方法

washingHandsListener.fireAfterEventInvoked(new WashingHandsEvent(this,"洗手"));

}

}

System.out.println("吃饭");

}

}

2 事件类

package listen;

import java.util.EventObject;

public class Event extends EventObject{

/**

*

*/

private static final long serialVersionUID = 1L;

/**

*

* source 为事件源对象,在此示例中就是Child对象

* @param source

*/

public Event(Object source) {

super(source);

}

}

3 事件接口实现类

package listen;

public class WashingHandsEvent extends Event{

private String eventName;

/**

*

*/

private static final long serialVersionUID = 1L;

public WashingHandsEvent(Object source,String eventName) {

super(source);

this.eventName = eventName;

}

public String getEventName() {

return eventName;

}

public void setEventName(String eventName) {

this.eventName = eventName;

}

}

4 监听器接口

package listen;

import java.util.EventListener;

public interface Listener extends EventListener{

public void fireAfterEventInvoked(Event event);

}

5 监听器实现

package listen;

public interface RemaindWashListener extends Listener{

/**

* 监听器实现类型

* 1、可以将方法的具体实现写在改实现类中,

* 2、也可以将该类定义为接口,在调用的时候再用内部类的方式来写具体实现。(对于调用者实现比较灵活)

* 本示例用的是第二种

*/

public void fireAfterEventInvoked(Event event); /*{

WashingHandsEvent WashingHandsEvent = (WashingHandsEvent)event;

System.out.println("饭前需要"+WashingHandsEvent.getEventName());

}

*/

}

6 main测试类

package listen;

import java.util.ArrayList;

import java.util.List;

public class TestMain {

public static void main(String[] args) {

Child child = new Child();

//在被监听对象中注册监听

child.addListener(new RemaindWashListener() {//实现监听类抽象接口和方法具体实现

@Override

public void fireAfterEventInvoked(Event event) {

System.out.println("吃饭前洗手");

}

});

child.eat();

}

}

7 演示结果

bcad05a4158b

图片.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值