Guava实现消息通知
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
package top.fjy8018.designpattern.pattern.behavior.observer.guava;
|
||||
|
||||
import com.google.common.eventbus.EventBus;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
/**
|
||||
* 课程
|
||||
* 被观察者类
|
||||
*
|
||||
* @author F嘉阳
|
||||
* @date 2020/3/5 15:23
|
||||
*/
|
||||
@Slf4j
|
||||
@Getter
|
||||
@AllArgsConstructor
|
||||
public class Course extends EventBus {
|
||||
|
||||
private String courseName;
|
||||
|
||||
/**
|
||||
* 产生问题
|
||||
*
|
||||
* @param event
|
||||
*/
|
||||
public void produceQuestion(CourseEvent event) {
|
||||
String msg = String.format("%s在%s提交了一个问题", event.getQuestion().getUsername(), event.getCourse().getCourseName());
|
||||
post(event);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
package top.fjy8018.designpattern.pattern.behavior.observer.guava;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @author F嘉阳
|
||||
* @date 2020/3/6 16:33
|
||||
*/
|
||||
@Data
|
||||
public class CourseEvent {
|
||||
|
||||
private Course course;
|
||||
|
||||
private Question question;
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
package top.fjy8018.designpattern.pattern.behavior.observer.guava;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
|
||||
/**
|
||||
* 课程问题
|
||||
*
|
||||
* @author F嘉阳
|
||||
* @date 2020/3/5 15:23
|
||||
*/
|
||||
@Getter
|
||||
@AllArgsConstructor
|
||||
public class Question {
|
||||
|
||||
private String username;
|
||||
|
||||
private String content;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
package top.fjy8018.designpattern.pattern.behavior.observer.guava;
|
||||
|
||||
import com.google.common.eventbus.Subscribe;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
/**
|
||||
* 老师实体
|
||||
* <p>
|
||||
* 老师观察课程是否产生了新的问题
|
||||
*
|
||||
* @author F嘉阳
|
||||
* @date 2020/3/5 15:24
|
||||
*/
|
||||
@Slf4j
|
||||
@Getter
|
||||
@AllArgsConstructor
|
||||
public class Teacher {
|
||||
|
||||
private String teacherName;
|
||||
|
||||
@Subscribe
|
||||
public void update(CourseEvent event) {
|
||||
log.info("{}老师的{}课程接收到一个{}提交的问题,内容为:{}",
|
||||
teacherName, event.getCourse().getCourseName(), event.getQuestion().getUsername(), event.getQuestion().getContent());
|
||||
}
|
||||
}
|
||||
@@ -1,24 +0,0 @@
|
||||
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("提交事件的内容");
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
package top.fjy8018.designpattern.pattern.behavior.observer.guava;
|
||||
|
||||
import com.google.common.eventbus.EventBus;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.junit.jupiter.api.Test;
|
||||
/**
|
||||
* @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("提交事件的内容");
|
||||
}
|
||||
|
||||
@Test
|
||||
void course() {
|
||||
Course course = new Course("Java设计模式");
|
||||
Teacher teacher = new Teacher("fjy8018");
|
||||
|
||||
course.register(teacher);
|
||||
|
||||
// 业务逻辑
|
||||
Question question = new Question("fjy", "问题内容XXX");
|
||||
CourseEvent event = new CourseEvent();
|
||||
event.setCourse(course);
|
||||
event.setQuestion(question);
|
||||
|
||||
course.produceQuestion(event);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user