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种设计模式的更多相关文章

  1. Mybatis 中经典的 9 种设计模式!面试可以吹牛了

    虽然我们都知道有23个设计模式,但是大多停留在概念层面,真实开发中很少遇到.Mybatis源码中使用了大量的设计模式,阅读源码并观察设计模式在其中的应用,能够更深入的理解设计模式. Mybatis至少 ...

  2. mybatis中用到的9种设计模式

    1.Builder模式:例如SqlSessionFactoryBuilder.XMLConfigBuilder.XMLMapperBuilder.XMLStatementBuilder.CacheBu ...

  3. [转] 9种设计模式在Spring中的运用

    作者:iCoding91地址:https://blog.csdn.net/caoxiaohong1005 转发的公众号地址,有其他设计模式介绍:https://mp.weixin.qq.com/s/Z ...

  4. 9种设计模式在Spring中的运用,一定要非常熟练

    1.简单工厂(非23种设计模式中的一种) 实现方式: BeanFactory.Spring中的BeanFactory就是简单工厂模式的体现,根据传入一个唯一的标识来获得Bean对象,但是否是在传入参数 ...

  5. 设计模式学习笔记(详细) - 七大原则、UML类图、23种设计模式

    目录 设计模式七大原则 UML类图 设计模式分类 单例模式 工厂设计模式 简单工厂模式 工厂方法模式(使用抽象类,多个is-a) 抽象工厂模式(使用接口,多个like-a) 原型模式 建造者模式 适配 ...

  6. Java开发中的23种设计模式详解

    [放弃了原文访问者模式的Demo,自己写了一个新使用场景的Demo,加上了自己的理解] [源码地址:https://github.com/leon66666/DesignPattern] 一.设计模式 ...

  7. Java开发中的23种设计模式详解(转)

    设计模式(Design Patterns) ——可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了 ...

  8. 为什么GOF的23种设计模式里面没有MVC?

    GoF (Gang of Four,四人组, <Design Patterns: Elements of Reusable Object-Oriented Software>/<设计 ...

  9. 为什么MVC不是一种设计模式

    http://damoqiongqiu.iteye.com/blog/1949256 ---比较Backbone和Ext4.x在MVC实现上的差异 大漠穷秋 前言 圣人云:不想做妈咪的小姐不是好码农. ...

随机推荐

  1. Django Model 基础数据库操作应用

    https://blog.csdn.net/Mrzhangjwei/article/details/53001841 一.数据库操作1.创建model表 基本结构: from django.db im ...

  2. CornerNet 算法笔记

    论文名称:CornerNet: Detecting Objects as Paired Keypoints 论文链接:https://arxiv.org/abs/1808.01244 代码链接:htt ...

  3. javascript预编译练习(变态篇)

    例1. <!DOCTYPE html> <html> <head> <title></title> </head> <bo ...

  4. weiphp记录

    jae 上传必须包括这2个文件,不然又会重新安装 标志文件有两个:Application/Install/Data/install.lockApplication/User/Conf/config.p ...

  5. luoguP2822-组合数问题(基础DP)

    题目链接:https://www.luogu.org/problemnew/show/P2822 题意:输入T和k,有T组询问.每组询问输入n.m,求C(i,j)能模k的个数(0<=i<= ...

  6. Java基础(七)

    字符串String类 字符串的两个问题 构造方法 字符串池 字符串的内容不可变 比较方法 练习:模拟登陆 练习:模拟登陆(限制重试次数) 替换方法(敏感词过滤) 如果希望将字符串当中指定的部分进行替换 ...

  7. Java文件读写分析

    本文内容:IO流操作文件的细节分析:分析各种操作文件的方式. 读写一个文件 从一个示例开始分析,如何操作文件: /** * 向一个文件中写入数据 * @throws IOException */ pr ...

  8. [BZOJ4180] 字符串计数

    膜一发KsCla巨佬 #include <bits/stdc++.h> using namespace std; typedef long long ll; const int N=2e5 ...

  9. JavaScript刷新事件

    1, Location reload() 方法 2,

  10. golang(4):函数 & 数组 & 切片 & map & 锁

    内置函数 // 1. close:主要用来关闭channel // 2. len:用来求长度,比如string.array.slice.map.channel // 3. new:用来分配内存,主要用 ...