java实现简单的eventEmiter

package evnet;

/**
 * 
 * @author li
 * 
 */
public class Event {
    private String eventName;
    private IEventHandler eventHandler;

    public Event(String eventName, IEventHandler eventHandler) {
        super();
        this.eventName = eventName;
        this.eventHandler = eventHandler;
    }

    public String getEventName() {
        return eventName;
    }

    public void setEventName(String eventName) {
        this.eventName = eventName;
    }

    public IEventHandler getEventHandler() {
        return eventHandler;
    }

    public void setEventHandler(IEventHandler eventHandler) {
        this.eventHandler = eventHandler;
    }

}
package evnet;

import java.util.ArrayList;
import java.util.List;

public class EventEmitter {
    private List<Event> eventList = new ArrayList<Event>();

    public void on(String eventName, IEventHandler eventHandler) {
        eventList.add(new Event(eventName, eventHandler));
    }

    public void emit(String eventName, List<Object> params) {
        for (Event event : eventList) {
            if (event.getEventName().equals(eventName)) {
                event.getEventHandler().handleEvent(params);
            }
        }
    }
}
package evnet;

import java.util.List;

public interface IEventHandler {
    public void handleEvent(List<Object> params);
}
package evnet;

import java.util.ArrayList;
import java.util.List;

public class EventHandler implements IEventHandler {

    @Override
    public void handleEvent(List<Object> params) {
        System.out.println("处理事件" + params.toString());
    }

    public static void main(String[] args) {
        EventEmitter eventEmitter = new EventEmitter();
        eventEmitter.on("click", new EventHandler());
        List<Object> params = new ArrayList<>();
        params.add("test");
        eventEmitter.emit("click", params);

    }
}

 

posted @ 2015-12-09 17:36  程序猿进化之路  阅读(992)  评论(0)    收藏  举报