EventBus(Guava)

摘要: EventBus是Guava的事件处理机制,是设计模式中的观察者模式(生产/消费者编程模型)的优雅实现。对于事件监听和发布订阅模式,EventBus是一个非常优雅和简单解决方案,我们不用创建复杂的类和接口层次结构。   Observer模式是比较常用的设计模式之一,虽然有时候在具体代码里,它不一定叫这个名字,比如改头换面叫个Listener,但模式就是这个模式。手工实现一个Observer也不是多复杂的一件事,只是因为这个设计模式实在太常用了,Java就把它放到了JDK里面:Observable和Observer,从JDK 1.0里,它们就一直在那里。从某种程度上说,它简化了Obser...


EventBus基本用法:

使用Guava之后, 如果要订阅消息, 就不用再继承指定的接口, 只需要在指定的方法上加上@Subscribe注解即可。代码如下:

消息封装类:

public class TestEvent {    
        private final int message;    
        public TestEvent(int message) {        
        this.message = message;
        System.out.println("event message:"+message);
    }    
    public int getMessage() { 
        return message;
    }
}
消息接受类:

public class EventListener {
    public int lastMessage = 0;

    @Subscribe    
    public void listen(TestEvent event) {
        lastMessage = event.getMessage();
        System.out.println("Message:"+lastMessage);
    }    
    public int getLastMessage() {      
        return lastMessage;
    }
}

测试类及输出结果:

public class TestEventBus {
    @Test    
    public void testReceiveEvent() throws Exception {

        EventBus eventBus = new EventBus("test");
        EventListener listener = new EventListener();

        eventBus.register(listener);

        eventBus.post(new TestEvent(200));
        eventBus.post(new TestEvent(300));
        eventBus.post(new TestEvent(400));

        System.out.println("LastMessage:"+listener.getLastMessage());

    }
}
//输出信息
event message:200
Message:200
event message:300
Message:300
event message:400
Message:400
LastMessage:400



你可能感兴趣的:(中级Android工程师进阶)