Mybatis运用到的3种设计模式
Mybatis运用到的3种设计模式
1.构造者模式
2.工厂模式
3.代理模式
1.构造者模式
使用SqlSessionFactoryBuilder,根据核心配置文件,构造一个SqlSessionFactory对象出来
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
SqlSessionFactory factory = builder.build(is);
1
2
构造者模式:用于构造一个对象,它的重点在于根据配置文件,或者参数,定制一个对象出来
好处:可以把定制对象的复杂过程隐藏起来,只要调用一个方法,把配置文件/参数传递进去,就可以得到根据参数定制的对象。
Mybatis里的应用:
有一个构造者SqlSessionFactoryBuilder,给构造者不同的配置文件信息,构造者能够给我们构造出来不同的SqlSessionFactory对象
根据传递进去的参数/配置文件,定制的SqlSessionFactory对象
2.工厂模式
使用SqlSessionFactory,生产一个SqlSession对象出来
SqlSession session = factory.openSession();
1
工厂模式:用于代替new操作的一种模式,是一种最常用的实例化对象的模式了。
好处:可以降低程序之间的耦合性,提高应用的可扩展性,在功能维护时尽量少的代码修改
和构造者的区别:
构造者模式:根据参数/配置文件,定制一个对象出来;重点在与定制对象
工厂模式:批量生产同一类对象,代替new操作,用于解耦合;重点在于解耦合
3.代理模式
使用SqlSession获取UserDao的代理对象,通过代理对象实现增删改查的操作
UserDao dao = session.getMapper(UserDao.class);
1
代理模式:在某些情况下,一个对象不适合或者不能直接调用另外一个对象,就可以使用代理对象作为中介直接调用。
好处:
职责清晰, 被代理对象只要完成自己的业务逻辑,不需要关心其他非本职事务;通过代理对象来完成功能的扩展。附带的后果就是编程简洁、清晰
高扩展性。
Mybatis里代理模式的应用:
没有被代理的目标对象(映射器接口没有实现类对象),所有工作由代理对象来完成
好处:我们只要提供接口即可,不需要再编写实现类代码了,Mybatis使用更简单了
————————————————
版权声明:本文为CSDN博主「jy没空理你」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_42705210/article/details/96346521
Mybatis运用到的3种设计模式的更多相关文章
- Mybatis 中经典的 9 种设计模式!面试可以吹牛了
虽然我们都知道有23个设计模式,但是大多停留在概念层面,真实开发中很少遇到.Mybatis源码中使用了大量的设计模式,阅读源码并观察设计模式在其中的应用,能够更深入的理解设计模式. Mybatis至少 ...
- mybatis中用到的9种设计模式
1.Builder模式:例如SqlSessionFactoryBuilder.XMLConfigBuilder.XMLMapperBuilder.XMLStatementBuilder.CacheBu ...
- [转] 9种设计模式在Spring中的运用
作者:iCoding91地址:https://blog.csdn.net/caoxiaohong1005 转发的公众号地址,有其他设计模式介绍:https://mp.weixin.qq.com/s/Z ...
- 9种设计模式在Spring中的运用,一定要非常熟练
1.简单工厂(非23种设计模式中的一种) 实现方式: BeanFactory.Spring中的BeanFactory就是简单工厂模式的体现,根据传入一个唯一的标识来获得Bean对象,但是否是在传入参数 ...
- 设计模式学习笔记(详细) - 七大原则、UML类图、23种设计模式
目录 设计模式七大原则 UML类图 设计模式分类 单例模式 工厂设计模式 简单工厂模式 工厂方法模式(使用抽象类,多个is-a) 抽象工厂模式(使用接口,多个like-a) 原型模式 建造者模式 适配 ...
- Java开发中的23种设计模式详解
[放弃了原文访问者模式的Demo,自己写了一个新使用场景的Demo,加上了自己的理解] [源码地址:https://github.com/leon66666/DesignPattern] 一.设计模式 ...
- Java开发中的23种设计模式详解(转)
设计模式(Design Patterns) ——可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了 ...
- 为什么GOF的23种设计模式里面没有MVC?
GoF (Gang of Four,四人组, <Design Patterns: Elements of Reusable Object-Oriented Software>/<设计 ...
- 为什么MVC不是一种设计模式
http://damoqiongqiu.iteye.com/blog/1949256 ---比较Backbone和Ext4.x在MVC实现上的差异 大漠穷秋 前言 圣人云:不想做妈咪的小姐不是好码农. ...
随机推荐
- TensorFlow实战第二课(添加神经层)
莫烦tensorflow实战教学 1.添加神经层 #add_layer() import tensorflow as tf def add_layer(inputs,in_size,out_size, ...
- ASP.NET Session详解(转)
ASP.NET Session详解 本文章来自:http://blog.163.com/adam601@126/blog/static/22506317200932824210996/ 当用户在 We ...
- 基于vs插件的abp代码生成器
工作了这么多年,一直都在小公司摸爬滚打,对于小公司而言,开发人员少,代码风格五花八门.要想用更少的人,更快的速度,开发更规范的代码,那自然离不开代码生成器.之前用过动软的,也用过T4,后面又接触了力软 ...
- 洛谷 P1268 树的重量 题解
题面 目的:求出树的各边长度 条件:每个节点之间最短路.整个图中不存在负边 我们可以每一次把一个点加入树内,求出这个点和已经构建好的树的边的长度: 这个长度抽象理解一下就是(dis[i][j]+dis ...
- 从入门到自闭之Python整型,字符串以及for循环
Day 01 整型: 对比: 在python 2 版本中有整型,长整型long 在python 3 版本中全部都是整型 用于计算和比较 整型和布尔值的转换 二进制转换成十进制: print (in ...
- JAVA break、continue和return的区别
控制跳转:continue和break的区别,以为return Continue在循环中使用,一般在for中使用 Break:跳出单重循环,常和switch搭配使用. 效果区别 Break的结果如下: ...
- Java NIO浅析 转至 美团技术团队
出处: Java NIO浅析 NIO(Non-blocking I/O,在Java领域,也称为New I/O),是一种同步非阻塞的I/O模型,也是I/O多路复用的基础,已经被越来越多地应用到大型应用服 ...
- java中代码块和构造方法以及普通方法的代码执行顺序总结
说实话,这块真的不好理解啊~都怪jvm 执行顺序搞这么复杂,哼╭(╯^╰)╮ 但是 我们能怎么办,只能研究呗!!! !:首先,毫无置疑的,静态代码块在加载时就执行了,所以肯定是最先执行的.... ...
- FluentValidation在C# WPF中的应用
原文:FluentValidation在C# WPF中的应用 一.简介 介绍FluentValidation的文章不少,零度编程的介绍我引用下:FluentValidation 是一个基于 .NET ...
- 基于EPICS实现西门子S7通信
(1) EPICS官网下载Demo并复制文件到指定位置 (2) 创建Modules文件夹,wget https://epics.anl.gov/download/modules ...