zoukankan      html  css  js  c++  java
  • JAVA : 简单event机制的实现(伪码)

    <S> 
    public interface EventBase<S> {
    void onEvent(S source, Object[]... arguments);
    }
    <S,T extends EventBase<S>>
    public class EventSender<S, T> {
    private List<T> receivers = new ArrayList<T>();
    public void addReceiver(T receiver) {
    if (null == receiver) 
    throw new RuntimeException("Can't add null as receiver");
    this.receivers.add(T);
    }
    public void removeReceiver(T receiver) {
    if(this.receivers.contains(receiver)) {
    this.receivers.remove(receiver);
    }
    }
    public void triggerEvent(S source, Object[]... arguments) {
    for(T receiver : this.receivers) {
    receiver.onEvent(source, arguments);
    }
    }
    }
    //declare the event 
    <S>
    public interface OnLoadEvent<S> extends EventBase<S {
    }
    //test class
    public MyEntityObj {
    //use the event in the class
    public EventSender<MyEntityObj, OnLoadEvent<MyEntityObj>> onLoad() {
    return onLoadEvent;
    }
    private EventSender<MyEntityObj, OnLoadEvent<MyEntityObj>> onLoadEvent = new ....;
    private void someMethod() {
    //do something
    this.onLoad().triggerEvent(this, "This is a test", 100);
    }
    }
    //receiver class
    public class SimpleReceiver {
    MyEntityObj obj;
    class myOnLoadHandler implements OnLoadEvent<SimpleReceiver> {
    void onEvent(S source, Object[]... arguments){
    //print something here when receive the event
    }
    }
    public void init() {
    //register event
    obj.onLoad().addReceiver(new myOnLoadHandler());
    }
    }
  • 相关阅读:
    挂载镜像光盘
    源码安装三部曲
    yum和rpm工具使用
    查看软件 有哪些文件
    国内软件源地址
    python代码中碰到的问题及解决 凯
    python之编写登陆接口(第一天) 凯
    python学习笔记之基础二(第二天) 凯
    python学习笔记之基础一(第一天) 凯
    window7下安装第三方包报错及解决 凯
  • 原文地址:https://www.cnblogs.com/sliencer/p/2410891.html
Copyright © 2011-2022 走看看