EventDispatch.java
上传用户:hensond
上传日期:2021-12-27
资源大小:817k
文件大小:1k
- package com.company.section4;
- import java.util.Observable;
- import java.util.Observer;
- import java.util.Vector;
- /**
- * @author cbf4Life cbf4life@126.com
- * I'm glad to share my knowledge with you all.
- */
- public class EventDispatch implements Observer{
- //单例模式
- private final static EventDispatch dispatch = new EventDispatch();
- //事件消费者
- private Vector<EventCustomer> customer = new Vector<EventCustomer>();
-
- //不允许生成新的实例
- private EventDispatch(){
-
- }
-
- //获得单例对象
- public static EventDispatch getEventDispathc(){
- return dispatch;
- }
-
- //事件触发
- public void update(Observable o, Object arg) {
- //事件的源头
- Product product = (Product)arg;
- //事件
- ProductEvent event = (ProductEvent)o;
-
- //处理者处理,这里是中介者模式的核心,可以是很复杂的业务逻辑
- for(EventCustomer e:customer){
- //处理能力是否匹配
- for(EventCustomType t:e.getCustomType()){
- if(t.getValue() == event.getEventType().getValue()){
- e.exec(event);
- }
- }
- }
- }
- //注册事件处理者
- public void registerCustomer(EventCustomer _customer){
- customer.add(_customer);
- }
-
- }