1700483100
1700483101
}
1700483102
1700483103
}
1700483104
1700483105
}
1700483106
1700483107
//注册事件处理者
1700483108
1700483109
public void registerCustomer(EventCustomer_customer){
1700483110
1700483111
customer.add(_customer);
1700483112
1700483113
}
1700483114
1700483115
}
1700483116
1700483117
我们在这里使用Vector来存储所有的事件处理者,在update方法中使用了两个简单的for循环来完成业务逻辑的判断,只要事件的处理者级别和事件的类型相匹配,就调用事件处理者的exec方法来处理事件,该逻辑是整个事件触发架构的关键点,但不是难点。请读者注意,在设计这样的框架前,一定要定义好消费者与生产者之间的搭配问题,一般的做法是通过xml文件类或者IoC容器配置规则,然后在框架启动时加载并驻留内存。
1700483118
1700483119
EventCustomer抽象类负责定义事件处理者必须具有的行为,首先是每一个事件的处理者都必须定义自己能够处理的级别,也就是通过构造函数来定义自己的处理能力,当然处理能力可以是多值的,也就是说一个处理者可以处理多个事件;然后各个事件的处理者只要实现exec方法就可以了,完成自己对事件的消费处理即可。我们先来看抽象的事件处理者,如代码清单36-8所示。
1700483120
1700483121
代码清单36-8 抽象的事件处理者
1700483122
1700483123
public abstract class EventCustomer{
1700483124
1700483125
//容纳每个消费者能够处理的级别
1700483126
1700483127
private Vector<EventCustomType>customType=new Vector<EventCustomType>();
1700483128
1700483129
//每个消费者都要声明自己处理哪一类别的事件
1700483130
1700483131
public EventCustomer(EventCustomType_type){
1700483132
1700483133
addCustomType(_type);
1700483134
1700483135
}
1700483136
1700483137
//每个消费者可以消费多个事件
1700483138
1700483139
public void addCustomType(EventCustomType_type){
1700483140
1700483141
customType.add(_type);
1700483142
1700483143
}
1700483144
1700483145
//得到自己的处理能力
1700483146
1700483147
public Vector<EventCustomType>getCustomType(){
1700483148
1700483149
return customType;
[
上一页 ]
[ :1.7004831e+09 ]
[
下一页 ]