MyBatis框架设计模式分析

MyBatis框架设计模式分析_第1张图片

  上图是我们的测试类,我们现在从这个类分析mybatis框架的设计模式。

 

  首先是读取配置文件,那不外乎一个常见的问题——绝对路径和相对路径。用绝对路径的话你产品给到其他电脑,没你指定的盘怎么办;用相对路径的话,src/java/main/xxx.xml,如果是个web工程,一旦部署,src目录就没了(web工程是部署到tomcat等服务器运行的,这个时候程序目录里没src文件)。

  所以我们不用绝对路径也不用相对路径,那怎么读配置文件呢?1.使用类加载器——只能读取类路径的配置文件2.使用ServletCcontext对象的getRealPath()——能得到当前应用部署的绝对路径。

 

  我们再来看工厂的创建,创建工厂mybatis使用了构建者模式——当开发者要创建xxx的时候,无需考虑具体的构建方式,把构建细节交给一个包工队(buider)。在这里这个包工队就是SqlSessionFactoryBuilder。繁琐复杂的东西都不用管,只需要把配置文件给buider就行,细节都不用操心。

 

  我们再看SqlSession的创建,使用了工厂模式,如果对象的实例化用new xxx()实现,当需求发生改动,需要变成new yyy()时,我们就要改一遍代码,重新编译重新部署重启服务器。过程及其繁杂,于是我们把new屏蔽了,而是使用了工厂生产一个session对象,这时就降低了类之间的依赖关系,我们称之为解耦。

 

  创建dao接口代理对象时,使用了代理模式,优势是不修改源码的基础上对已有方法增强,换句话说就是我们使用这个代码模式实现不写dao实现类,也能实现功能的好处。

 

  那为什么mybatis要搞那么多东西,直接从配置文件获得代理对象不香吗?

MyBatis框架设计模式分析_第2张图片

  那是因为中间的过程有很多的重载,能实现其他不同的需求,能进行灵活的封装,等本菜鸡学完后面的框架,应该就能做到上图一样的直接操作了。

MyBatis框架设计模式分析_第3张图片

 

你可能感兴趣的:(MyBatis框架设计模式分析)