1700482791
1700482792
在该类图中,观察者为EventDispatch类,它使用了单例模式,避免对象膨胀,但同时也带来了性能及线程安全隐患,这点需要大家在实际应用中注意(想想Spring中的Bean注入,默认也是单例,在通常的应用中一般不需要修改,除非是较大并发的应用)。我们来看代码,先来看事件类型定义,它是一个枚举类型,如代码清单36-3所示。
1700482793
1700482794
代码清单36-3 事件类型定义
1700482795
1700482796
public enum ProductEventType{
1700482797
1700482798
//新建一个产品
1700482799
1700482800
NEW_PRODUCT(1),
1700482801
1700482802
//删除一个产品
1700482803
1700482804
DEL_PRODUCT(2),
1700482805
1700482806
//修改一个产品
1700482807
1700482808
EDIT_PRODUCT(3),
1700482809
1700482810
//克隆一个产品
1700482811
1700482812
CLONE_PRODUCT(4);
1700482813
1700482814
private int value=0;
1700482815
1700482816
private ProductEventType(int_value){
1700482817
1700482818
this.value=_value;
1700482819
1700482820
}
1700482821
1700482822
public int getValue(){
1700482823
1700482824
return this.value;
1700482825
1700482826
}
1700482827
1700482828
}
1700482829
1700482830
这里定义了4个事件类型,分别是新建、修改、删除以及克隆,比较简单。我们再来看产品的事件,如代码清单36-4所示。
1700482831
1700482832
代码清单36-4 产品事件
1700482833
1700482834
public class ProductEvent extends Observable{
1700482835
1700482836
//事件起源
1700482837
1700482838
private Product source;
1700482839
1700482840
//事件的类型
[
上一页 ]
[ :1.700482791e+09 ]
[
下一页 ]