工厂模式的类图与mybatis中的应用

三个工厂模式

动机:

工厂里提供很多方法,不同方法新建不同对象

看了很多解释我的总结有以下几点:

1、减去繁琐的new工作,统一让工厂创建对象

2、软件系统中经常面临对象的创建工作,由于需求的变化,这个对象可能也随之发生变化,但他却拥有比较稳定的接口。需要提供一种封装机制来隔离出这个易变对象的变化,从而保持系统中其他依赖该对象的对象不随之需求变化而变化。

其次:

三个工厂模式,各有千秋

从简单工厂模式——》工厂方法模式,解决了对产品的拓展不符合OCT原则的问题

从工厂方法模式——》抽象工厂模式,解决了一个过程只能生产一个产品的问题

但是反而多了一个问题,部分不符合OCT原则的问题,对工厂的拓展符合OCT,但是每次要拓展一个产品,就要修改一次工厂里面的方法

类图:

简单工厂模式
工厂模式的类图与mybatis中的应用

工厂方法模式

工厂模式的类图与mybatis中的应用

抽象工厂模式
工厂模式的类图与mybatis中的应用

场景:

使用场景,mybatis的数据源工厂:

顺便复习了一趟mybatis的数据源和连接池,挺好的大致总结一下:

无论什么框架,操作数据库很多都需要这么一个流程:注册驱动、获取对象(包括配置)、再去执行SQL,那mybatis作为框架封装了数据源的模块,每次我们都从数据源工厂获取不同的数据源:
工厂模式的类图与mybatis中的应用

没错,就是工厂模式,JNDI数据源工厂就生成JNDI数据源,POOL数据源工厂就生成带连接池的数据源工厂,unpool数据源工厂生成的就是不带数据源工厂的。

参考:https://www.cnblogs.com/firstdream/p/8666845.html