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。
我們平常用的是第三個,有連接池的工廠類,具體源碼很簡單,這裏不多說。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章