③JAVA設計模式筆記之工廠模式
阿新 • • 發佈:2020-12-10
JAVA設計模式筆記之工廠模式
工廠模式
用大白話講,工廠模式就是你需要什麼實現類,是需要告訴我名稱就可以了,我根據名稱的不同,給你不同的建立物件
應用
- 專案中獲取不同的資料庫連線實現類
- 專案中獲取不同的日誌記錄途徑,可能記錄到本地硬碟、系統事件、遠端伺服器等
優點
- 對於呼叫者來說,遮蔽掉複雜的實現,只需要呼叫
缺點
- 每次增加一個產品時,都需要增加一個具體類和物件實現工廠,使得系統中類的個數成倍增加,在一定程度上增加了系統的複雜度,同時也增加了系統具體類的依賴。
舉個栗子
在一個專案中,可能需要實現不同的資料庫連線,以便出廠時可以選擇安裝不同的資料庫,這個時候可以使用工廠模式。
需要的介面
public interface Connections {
public void getConnection();
}
不同的實現類
public class H2Connection implements Connections{
@Override
public void getConnection() {
System.out.println("和H2資料庫連線,進行增刪改查...");
}
}
public class CKConnection implements Connections{ @Override public void getConnection() { System.out.println("和CK資料庫連線,進行增刪改查..."); } }
public class MarridbConnection implements Connections {
@Override
public void getConnection() {
System.out.println("和marridb資料庫連線,進行增刪改查...");
}
}
工廠類
import com.alibaba.druid.util.StringUtils; public class ConnectionFactory { public Connections getConnection(String str){ if(StringUtils.isEmpty(str)){ return null; } if(str.equals("H2")){ return new H2Connection(); } if(str.equals("Mariadb")){ return new MariadbConnection(); } if(str.equals("CK")){ return new CKConnection(); } return null; } }
main方法
public static void main(String[] args) {
ConnectionFactory connectionFactory = new ConnectionFactory();
//使用H2資料庫
Connections h2 = connectionFactory.getConnection("H2");
h2.getConnection();
//使用CK資料庫
Connections ck = connectionFactory.getConnection("CK");
ck.getConnection();
//使用marridb資料庫
Connections mariadb = connectionFactory.getConnection("Mariadb");
mariadb.getConnection();
}
輸出結果