您好,欢迎来到百家汽车网。
搜索
您的当前位置:首页设计模式之模式

设计模式之模式

来源:百家汽车网

事件处理模型:


事件源:


提供订阅与取消监听者的方法,并负责维护监听者列表,发送事件给监听者


监听者:


每一个监听者实现接口来接收事件,并负责从事件源订阅与取消订阅



图示:




demo


事件源:

Context:


package com.demo.event;

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

public class Context {
	private static List<Listener> list=new ArrayList<Listener>();
	public static void addListener(Listener listener){
		list.add(listener);
	}
	public static void removeListener(Listener listener){
		list.remove(listener);
	}
	public static void sendNotification(Event event){
		for(Listener listener:list){
			listener.onChange(event);
		}
	}
}

监听者:

Listener

package com.demo.event;

public interface Listener {
	public void onChange(Event event);
}

MyListener


package com.demo.event;

public class MyListener implements Listener {

	@Override
	public void onChange(Event event) {
		switch(event.getType()){
			case Event.INSTALLED:
				System.out.println("do install...");
				break;
			case Event.STARTED :
				System.out.println("do started...");
				break;
			case Event.RESOLVED :
				System.out.println("do resolved...");
				break;
			case Event.STOPPED :
				System.out.println("do stopped...");
				break;
			case Event.UNRESOLVED :
				System.out.println("do unresolved...");
				break;
			case Event.UNINSTALLED :
				System.out.println("do uninstalled...");
				break;
			default:
				throw new IllegalArgumentException();
		}
	}

}

事件:

package com.demo.event;

public class Event {
	public static final int INSTALLED =1; 
	public static final int STARTED =2; 
	public static final int RESOLVED  =3; 
	public static final int STOPPED =4; 
	public static final int UNRESOLVED  =5; 
	public static final int UNINSTALLED   =6;
	private int type ;
	private Object source ;
	public Event(int type, Object source) {
		this.type = type;
		this.source = source;
	}
	public int getType() {
		return type;
	}
	public Object getSource() {
		return source;
	}
}


測试:

package com.demo.event;

public class EventTest {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Listener listener=new MyListener();
		//加入监听者
		Context.addListener(listener);
		//模拟bundle安装完毕事件触发
		Context.sendNotification(new Event(Event.INSTALLED, new MyBundle()));
	}

}



因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- baijiahaobaidu.com 版权所有 湘ICP备2023023988号-9

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务