Guava观察者
This commit is contained in:
@@ -0,0 +1,28 @@
|
|||||||
|
package top.fjy8018.designpattern.pattern.behavior.observer.guava;
|
||||||
|
|
||||||
|
import com.google.common.eventbus.Subscribe;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
|
import java.util.concurrent.ConcurrentMap;
|
||||||
|
import java.util.concurrent.CopyOnWriteArraySet;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Guava事件监听器
|
||||||
|
* {@link EventBus} 使用内部对象 {@link SubscriberRegistry} 内部使用 {@link ConcurrentMap} 存储订阅者
|
||||||
|
* 同时使用 {@link CopyOnWriteArraySet} 保证线程安全和订阅者唯一
|
||||||
|
* 故{@link com.google.common.eventbus.Subscriber}
|
||||||
|
* 重写了 {@link com.google.common.eventbus.Subscriber#equals(Object)}
|
||||||
|
* 和 {@link com.google.common.eventbus.Subscriber#hashCode()} 方法
|
||||||
|
*
|
||||||
|
* @author F嘉阳
|
||||||
|
* @date 2020/3/5 15:56
|
||||||
|
*/
|
||||||
|
@Slf4j
|
||||||
|
public class GuavaEvent {
|
||||||
|
|
||||||
|
@Subscribe
|
||||||
|
public void subscribe(String str) {
|
||||||
|
// 业务逻辑
|
||||||
|
log.info("执行订阅方法,传入参数是:{}", str);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
package top.fjy8018.designpattern.pattern.behavior.observer;
|
||||||
|
|
||||||
|
import com.google.common.eventbus.EventBus;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import top.fjy8018.designpattern.pattern.behavior.observer.guava.GuavaEvent;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author F嘉阳
|
||||||
|
* @date 2020/3/5 15:58
|
||||||
|
*/
|
||||||
|
@Slf4j
|
||||||
|
class GuavaEventTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void subscribe() {
|
||||||
|
EventBus eventBus = new EventBus();
|
||||||
|
GuavaEvent event = new GuavaEvent();
|
||||||
|
// 注册
|
||||||
|
eventBus.register(event);
|
||||||
|
eventBus.post("提交事件的内容");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user