1. 程式人生 > 其它 >③JAVA設計模式筆記之工廠模式

③JAVA設計模式筆記之工廠模式

技術標籤:後臺經驗設計模式java

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();
	}

輸出結果
在這裡插入圖片描述