吊打面试官之源码中用了哪些设计模式?
Posted 三太子敖丙
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了吊打面试官之源码中用了哪些设计模式?相关的知识,希望对你有一定的参考价值。
看完源码的我…
Builder模式,例如SqlSessionFactoryBuilder、XMLConfigBuilder等;
工厂模式,例如SqlSessionFactory、ObjectFactory、MapperProxyFactory;
单例模式,例如ErrorContext和LogFactory;
代理模式,Mybatis实现的核心,比如MapperProxy、ConnectionLogger,用的jdk的动态代理;还有executor.loader包使用了cglib或者javassist达到延迟加载的效果;
组合模式,例如SqlNode和各个子类ChooseSqlNode等;
模板方法模式,例如BaseExecutor和SimpleExecutor,还有BaseTypeHandler和所有的子类例如IntegerTypeHandler;
适配器模式,例如Log的Mybatis接口和它对jdbc、log4j等各种日志框架的适配实现;
装饰者模式,例如Cache包中的cache.decorators子包中等各个装饰者的实现;
迭代器模式,例如迭代器模式PropertyTokenizer;
你能答上这些吗?
1、MyBatis打开调试模式之后,能打印sql语句等信息,这是怎么实现的?实现过程中使用了什么设计模式?
2、MyBatis是如何为二级缓存动态添加日志、同步控制、阻塞、缓存淘汰策略等附加能力的?用了什么设计模式?
3、请描述从数据库连接池获取一个数据连接的过程;
4、什么是缓存雪崩?如何解决?
《MyBatis从青铜到王者之路》
Lison老师:
资深架构师,10余年java行业经验。
专精领域:精通JAVA、J2EE和前端开发,擅长互联网高并发、高可靠架构设计;
课程大纲
2.26
骨骼惊奇的MyBatis
2.日志模块分析
2.27
MyBatis的精妙之处,数据源与缓存的实现
2.缓存模块分析
2.28
解密核心运行流程,学习源码的正确姿势
▲附赠7.8G的Java架构进阶、视频资料
及程序员简历模板(简历做好,面试就成功了一半)
以上是关于吊打面试官之源码中用了哪些设计模式?的主要内容,如果未能解决你的问题,请参考以下文章