项目中是否用了设计模式,为什么要用这个设计模式?
例如:
这个设计模式怎么用?
观察者模式:
JDK中就有观察者模式
发布订阅模式
事件驱动编程最多的是人机交互。
JDK中的awt中就包含事件驱动编程。
事件驱动编程实现方案比较:
一个订单在订单系统处理,通过消息中间件发送到支付系统,支付系统处理再到物流系统处理
例如有很多系统连接一个数据库,现在数据库的Ip变了,现在要求系统24小时无停机,那这个问题怎么解决?
解决方法:将IP信息放到zooneeper中,即数据库的配置信息都方式在zookeeper中,在zookeeper中了一个watcher机制,当配置信息发生变化的时候,讲发生变化的信息推送给对应的数据,因此实现了分布式环境的无启停的热加载
实现方案:
测试:开启5个线程
在不停线程的情况下,修改上面的配置信息。
容器启动事件,在容器启动后的事件,容器停止后的事件。
spring的封装。
spring的事件驱动编程的场景:
在酒店系统的时候,在订完酒店后,有短信或者邮件的通知。
解决方案:
在订完酒店后就会往订单信息和短信表中插入信息。
测试代码如下:
当邮件服务错误的时候,
上面代码的问题,业务耦合度太高。1.编译级耦合。方法级别耦合
(还有包级别的耦合) 2.如果增值业务错误了,主业务都没法完成了,例如发短信错误,无法定酒店。
发送短信和发送邮件和订酒店都是在不同的线程。事务不能在不同的线程下传播。
采用事件驱动处理。
加了@EventLinstener注解的事务,
加了