• guava eventbus demo


    事件总线模式基于发布订阅模式,能够方便将副业务功能从主业务功能中脱离,在主业务逻辑上,只需要post事件,其他逻辑将在事件中执行

    1、使用注解方式

    @Subscribe将监听方法注册到总线上,当总线post event时,所有该event事件的方法都会得到执行

    public class EventBusTest {
    public static void main(String[] args) {
    EventBus eventBus= new EventBus();
    EventAuditor eventAuditor=new EventAuditor( eventBus);
    eventBus.post(new praiseEvent());//子类事件
    eventBus.post(new CommentEvent());//子类事件

    }
    }

    public class EventAuditor   {
    List<BaseEvent> sellEvents = Lists.newArrayList();
    public EventAuditor(EventBus eventBus){
    eventBus.register(this);//该类注册到总线
    }
    @Subscribe
    public void lister(BaseEvent baseEvent) {
    sellEvents.add(baseEvent);
    System.out.printf("%s from %n", baseEvent.praise());
    }
    public List<BaseEvent> getSellEvents() {
    return sellEvents;
    }
    }

    具体事件
    public class CommentEvent implements BaseEvent {
    @Override
    public String praise() {
    return "commentevent";
    }
    }

    2、维护一个列表,用于保存事件监听;每次将事件注册到监听器中,当post相应事件时,通过instanceOf判断具体事件,执行具体事件的逻辑。
    
    
  • 相关阅读:
    linux中断处理浅析
    linux页面回收浅析
    linux线程同步浅析
    剖析一个由sendfile引发的linux内核BUG
    比memcpy更快的内存拷贝
    linux内核SMP负载均衡浅析
    sscanf,snprintf
    mysql中实现longblob数据流式读写
    sscanf
    substr复制字符串的一部分
  • 原文地址:https://www.cnblogs.com/cindy-zhu/p/7009553.html
Copyright © 2020-2023  润新知