public class MyCommonEvent {
/** 事件类型 */
private String eventType=null;
/** 事件实体数据 */
private Object eventData=null;
public MyCommonEvent(String eventType,Object eventData){
this.eventType=eventType;
this.eventData=eventData;
}
public String getEventType() {
return eventType;
}
public void setEventType(String eventType) {
this.eventType = eventType;
}
public Object getEventData() {
return eventData;
}
public void setEventData(Object eventData) {
this.eventData = eventData;
}
}
public interface IMyCommonEventListener {
public void MyCommonEventActionPerformed(MyCommonEvent event);
}
public class MyCommonEventManager {
/** 单例对象 */
private static MyCommonEventManager eventManager=null;
/** 事件监听存储的哈希表对象 */
private Hashtable<String,Vector<IMyCommonEventListener>> eventHash=new Hashtable<String,Vector<IMyCommonEventListener>>();
private MyCommonEventManager(){}
public static synchronized MyCommonEventManager getInstance(){
if(eventManager==null){
eventManager=new MyCommonEventManager();
}
return eventManager;
}
public void addEventListener(String eventType,IMyCommonEventListener listener){
Vector<IMyCommonEventListener> eventVector=eventHash.get(eventType);
if(eventVector==null){
eventVector=new Vector<IMyCommonEventListener>();
}
eventVector.addElement(listener);
eventHash.put(eventType, eventVector);
}
public void fireEvent(MyCommonEvent event){
String eventType=event.getEventType();
Vector<IMyCommonEventListener> eventVector=eventHash.get(eventType);
if(eventVector!=null){
for (int i = 0; i < eventVector.size(); i++) {
eventVector.get(i).MyCommonEventActionPerformed(event);
}
}
}
public void removeEventListener(String eventType,IMyCommonEventListener listener){
Vector<IMyCommonEventListener> eventVector=eventHash.get(eventType);
if(eventVector!=null){
if(eventVector.contains(listener)){
eventVector.remove(listener);
if(eventVector.isEmpty()){
eventHash.remove(eventType);
}
}
}
}
}
public class MyCommonEventType {
public static final String MySTYLE_1_EVENT="MySTYLE_1_EVENT";
}
class MapController:
Map<String, String> map = new HashMap<>();
MyCommonEventManager.getInstance().fireEvent(new MyCommonEvent(MyCommonEventType.MySTYLE_1_EVENT, map));
class OverView implements IMyCommonEventListener:
MyCommonEventManager.getInstance().addEventListener(MyCommonEventType.MySTYLE_1_EVENT, this);
MyCommonEventManager.getInstance().removeEventListener(MyCommonEventType.MySTYLE_1_EVENT, this);
@Override
public void MyCommonEventActionPerformed(MyCommonEvent event) {
if(event.getEventType().equals(MyCommonEventType.MySTYLE_1_EVENT)){
@SuppressWarnings("unchecked")
Map<String, String> map = (Map<String, String>)event.getEventData();
}
}