文章目录
事件
public interface IEvent {
void setEventListener(IEventListener arg);
boolean rain();
boolean snow();
}
事件监听器
public interface IEventListener {
void doEvent(IEvent arg);
}
事件源
public class RainEvent implements IEvent {
private IEventListener ml;
private boolean rain;
@Override
public void setEventListener(IEventListener arg) {
ml = arg;
}
@Override
public boolean rain() {
return rain;
}
@Override
public boolean snow() {
return false;
}
public void eventHappened() {
rain = true;
ml.doEvent(this);
}
}
事件源
public class SnowEvent implements IEvent {
private IEventListener ml;
boolean rain;
boolean snow;
@Override
public void setEventListener(IEventListener arg) {
ml = arg;
}
@Override
public boolean rain() {
return rain;
}
@Override
public boolean snow() {
return snow;
}
public void eventHappened() {
snow = true;
ml.doEvent(this);
}
}
测试运行
public class Test {
public static void main(String[] args) {
// 事件源(被监听的对象)
RainEvent rainEvent = new RainEvent();
SnowEvent snowEvent = new SnowEvent();
// 监听器
IEventListener mEventListener = new IEventListener() {
@Override
public void doEvent(IEvent arg) {
if (true == arg.rain()) {
System.out.println("下雨了");
}else if(true == arg.snow()){
System.out.println("下大雪啦!");
}
}
};
// 注册监听器到事件源
rainEvent.setEventListener(mEventListener);
rainEvent.eventHappened();
// 注册监听器到事件源
snowEvent.setEventListener(mEventListener);
snowEvent.eventHappened();
}
}
原理我还没弄明白。简单的DEMO不难。
后言
- 文章是个人知识点整理总结,如有错误和不足之处欢迎指正。
- 如有疑问、或希望与笔者探讨技术问题(包括但不限于本章内容),欢迎添加笔者微信(o815441)。请备注“探讨技术问题”。欢迎交流、一起进步。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/69824.html