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. SQL- 将一张表的数据插入到另一张表,表结构不一致(加条件)

    公司业务需要,在对表进行操作的时候将操作人和操作记录记录到日志表里.记录下来以供参考和学习. 首先准备两张测试表:Info以及InfoLog 1.表结构相同的情况下: insert into Info ...

  2. Samba简单应用

    一.Samba 简介 1.介绍 Samba(SMB是其缩写) 是一个网络服务器,用于Linux和Windows共享文件之用:Samba 即可以用于Windows和Linux之间的共享文件,也一样用于L ...

  3. 【DSP开发】回马枪要你命 德州仪器发布最强ARM芯片Keystone II

    之前许多传闻称德州仪器将会彻底放弃OMAP系列ARM处理器,从此离开手持设备的江湖.如果你信以为真,那可就太小看德州仪器这个老狐狸了--要知道德州仪器诞生的比Intel都还早几年.三小时前,德州仪器宣 ...

  4. default.html

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  5. C# async await的使用

    async 声明一个包含异步代码的函数,该函数执行时不会阻塞调用线程. async标记的函数返回值必须为 void ,Task,Task<TResult> await 必须修饰Task 或 ...

  6. GrapeCity Documents for Excel 文档API组件 V2.2 新特性介绍

    GrapeCity Documents for Excel 文档API组件 V2.2 正式发布,本次新版本包含诸多重量级产品功能,如:将带有形状的电子表格导出为 PDF.控制分页和电子表格内容.将Ex ...

  7. mysql jdbc url

    地址为jdbc:mysql://localhost:3306/mymiaosha?characterEncoding=utf-8时访问时可能会出现下图提示 地址改为jdbc:mysql://local ...

  8. JavaScript和JSON转化

    1, JSON转JavaScript JSON.parse():https://www.runoob.com/json/json-parse.html 2, JavaScript转JSON JSON. ...

  9. 学习django: 庄园漫步

    最近在阅读django的资料. 发现一个系列写得很好. <被解放的姜戈> 作者:Vamei     出处:http://www.cnblogs.com/vame 感谢大神指路呀~

  10. 使用Python基于OpenCV的图像油画特效

    算法步骤: 1.获取图像的灰度图片 2.设计一个小方框(4x4/8x8 /10x10等),统计每个小方框的像素值 3.将0-255的灰度值划分成几个等级,并把第二步处理的结果映射到所设置的各个等级中, ...