Mybatis系列4-数据源源码分析

1.工厂模式

mybatis的数据源模块使用了工厂模式,分析源码前先讲下工厂模式。
(1)简单工厂模式
简单工厂模式是工厂类直接根据参数创建不同对象。

public class SimpleFactory {
    public static final int TYPE1= 1;
    public static final int TYPE2 = 2;
    public static final int TYPE3 = 3;

    public static A createA(int type) {
        switch (type) {
            case TYPE1:
                return new A1();
            case TYPE2:
                return new A2();
            case TYPE3:
            default:
                return new A3();
        }
    }
}

(2)工厂方法模式
工厂模式相对于简单工厂莫斯来说,不止一个工厂,每个工厂只生产一种产品。客户端负责挑选使用哪个工厂。
首先有一个工厂接口。


public interface ICarFactory {  
  
  public ICar getCar();
  
}  

然后多个工厂类实现。
public class ACarFactory implements ICarFactory {

public ICar getCar(){
return new ACar();
};

}
public class BCarFactory implements ICarFactory {

public ICar getCar(){
return new BCar();
};

}
(3)抽象工厂模式
抽象工厂模式是工厂方法模式的一个升级,工厂方法模式中只有一种产品,而抽象工厂模式中有多种产品,比如抽象工厂接口变为:

    public interface ICarFactory {  
  
  public ICar getCar();
    public IHouse getHouse();

}  

然后每个工厂实现内部都有两种产品。剩下的不多说。

2.mybatis的数据源

mybatis用的是工厂方法模式,有一个数据源工厂接口DataSourceFactory。

public interface DataSourceFactory {

  //设置DataSource的相关属性
  void setProperties(Properties props);

  //获取数据源
  DataSource getDataSource();

}

然后有三个工厂实现类。
JndiDataSourceFactory、UnpooledDataSourceFactory、PooledDataSourceFactory。
我们平常用的是第三个,有连接池的工厂类,具体源码很简单,这里不多说。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值