简单记录一下,在spring中如何实现Observer模式,这里以游戏事件来举例
实现基于spring的ApplicationEvent类和ApplicationListener接口
先定义一个游戏事件
@Getter
@Setter
public class GameEvent extends ApplicationEvent {
private String name;
private int personNums;
public GameEvent(Object source) {
super(source);
}
public GameEvent(Object source, String name, int personNums) {
super(source);
this.name = name;
this.personNums = personNums;
}
public void startGame() {
System.out.println("let's play game!");
}
}
实现监听器
public class GameListener implements ApplicationListener<ApplicationEvent> {
@Override
public void onApplicationEvent(ApplicationEvent event) {
if(event instanceof GameEvent) {
GameEvent gameEvent = (GameEvent) event;
gameEvent.startGame();
System.out.println("game name:"+gameEvent.getName());
System.out.println("game person num:"+gameEvent.getPersonNums());
}
}
}
public class Test {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
GameEvent gameEvent = new GameEvent("source","LOL",20);
context.publishEvent(gameEvent);
}
}