EventDispatch.java
上传用户:hensond
上传日期:2021-12-27
资源大小:817k
文件大小:1k
源码类别:

软件工程

开发平台:

Java

  1. package com.company.section4;
  2. import java.util.Observable;
  3. import java.util.Observer;
  4. import java.util.Vector;
  5. /**
  6.  * @author cbf4Life cbf4life@126.com
  7.  * I'm glad to share my knowledge with you all.
  8.  */
  9. public class EventDispatch implements Observer{
  10. //单例模式
  11. private final static EventDispatch dispatch = new EventDispatch(); 
  12. //事件消费者
  13. private Vector<EventCustomer> customer = new Vector<EventCustomer>();
  14. //不允许生成新的实例
  15. private EventDispatch(){
  16. }
  17. //获得单例对象
  18. public static EventDispatch getEventDispathc(){
  19. return dispatch;
  20. }
  21. //事件触发
  22. public void update(Observable o, Object arg) {
  23. //事件的源头
  24. Product product = (Product)arg;
  25. //事件
  26. ProductEvent event = (ProductEvent)o;
  27. //处理者处理,这里是中介者模式的核心,可以是很复杂的业务逻辑
  28. for(EventCustomer e:customer){
  29. //处理能力是否匹配
  30. for(EventCustomType t:e.getCustomType()){
  31. if(t.getValue() == event.getEventType().getValue()){
  32. e.exec(event);
  33. }
  34. }
  35. }
  36. }
  37. //注册事件处理者
  38. public void registerCustomer(EventCustomer _customer){
  39. customer.add(_customer);
  40. }
  41. }