事件驱动模型(简单示例代码)

注释都是自我理解,都是大白话,我回头忘了看一遍就能想起来
框架:Springboot
说实在的,我快不会用之前的ssm框架了,boot真的用起来超级方便啊

事件触发的环境

@Service
public class Context {
//这个类是Spring的类,属于事件的幕后推手。看似无用,实则掌控全局
    @Autowired
    private ApplicationEventPublisher applicationEventPublisher;


    public String test (String str){
        applicationEventPublisher.publishEvent(new EventA(this,new A(str,"女")));
        return str;
    }

}

事件Dto

//必须继承ApplicationEvent这个类,这样才能让幕后推手知道这是个事件
public class EventA extends ApplicationEvent {
	//action需要的某些参数,在这里被定义
    private A booking;

	//这里的构造函数有没有注意到有一个Object类型参数,这就是幕后推手!!!!
    public EventA(Object source, A booking) {
        super(source);
        this.booking = booking;
    }

    public EventA(Object source) {

        super(source);

    }

    public A getA() {

        return booking;

    }
}

action(事件驱动模型,驱动的就是这个action)

@Service
public class LisenerA {


	//加上这个注解,表明这是一个action;注解的值呢,就是你要被哪个事件驱动,你就写哪个事件
    @EventListener(classes = EventA.class)
    public void lisenerA(EventA a) {
        System.out.println(a.getA());
    }
}

备注:
事件驱动模型=触发的事件+事件bean+action。
数量 = N + 1 +1;

优点?
代码上看不出啥来,,还要多定义一个类,对,代码解耦了,并且保证了程序的原子性,
实际上是为了项目运行的时候,浪费CPU的资源,让CPU在没有事件触发的时候,让它休息一会。

OS:我太菜了,也没个人关注。不然关注了,就取消了

你可能感兴趣的:(设计模式)