自定义监听器的简单实现

实现思路:

  1. 编写MyEvent类,维护一个name属性,一个source。
  2. 编写事件源,维护一个listener,提供setListener的方法。并有自己的业务方法,在业务方法中调用监听器的对应监听方法。
  3. 编写监听器接口,规定一个方法供事件源调用。
  4. 编写监听者类,实例化事件源,给事件源设置listener,调用事件源的业务方法。

以马蓉、宝强、老宋为例,实现如下:

LaoMa.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class LaoMa {
private LaoMaListener listener;

public void setLaoMaListener(LaoMaListener listener) {
this.listener=listener;
}

public void meeting(String name) {
if(listener!=null) {
LaoMaEvent event=new LaoMaEvent();
event.setName(name);
event.setSource(this);
listener.meeting(event);
}
}
}

LaoMaEvent.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public class LaoMaEvent {

private String name;
private LaoMa source;

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public LaoMa getSource() {
return source;
}

public void setSource(LaoMa source) {
this.source = source;
}
}

LaoMaListener.java

1
2
3
public interface LaoMaListener {
void meeting(LaoMaEvent event);
}

LaoWang.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class LaoWang {
public static void main(String[] args) {
LaoMa ma=new LaoMa();

ma.setLaoMaListener(new LaoMaListener() {

@Override
public void meeting(LaoMaEvent event) {
System.out.println("baoqiang na dao k砍 "+event.getName());
}
});

// 接口回调
ma.meeting("laoSong");
}
}