簡單工廠模式
簡單工廠模式(Simple Factory Pattern)是一種建立型設計模式,它定義了一個工廠類,該類可以根據傳入的引數
決定建立哪種產品類的例項。簡單工廠模式將物件的建立邏輯封裝在一個工廠類中,客戶端只需要透過工廠類獲取例項,而不需要直接涉及例項化的細節。
簡單工廠模式包含三個主要部分:
產品介面(或抽象類):定義產品的共同介面,所有具體產品都實現該介面。 具體產品:實現產品介面,提供具體的實現。 工廠類:負責根據客戶端的請求建立具體的產品例項。
透過案例理解
案例概述
一個圖形工廠,生成出兩種畫圖工具(圓形和矩形),透過生產出來的畫圖工具進行繪圖。
案例結構
使用者(SimpleFactoryDemo)只需要知道,工廠方法類(ShapeFactory)和產品介面(Shape)即可。你寫得程式碼不需要import具體的類進入你的程式碼,只需要匯入介面和工廠類即可,這使得客戶端的程式碼不會和具體的類耦合到一起,這也是面向抽象(介面或抽象類)程式設計的一大好處,使用的是多型的特性。
案例程式碼
// 產品介面 - 圖形
interface Shape {
void draw();
}
// 具體產品 - 圓形
class Circle implements Shape {
@Override
public void draw() {
System.out.println("繪製圓形");
}
}
// 具體產品 - 矩形
class Rectangle implements Shape {
@Override
public void draw() {
System.out.println("繪製矩形");
}
}
// 工廠類
class ShapeFactory {
public static Shape createShape(String type) {
switch (type) {
case "circle":
return new Circle();
case "rectangle":
return new Rectangle();
default:
throw new IllegalArgumentException("無效的形狀型別: " + type);
}
}
}
// 客戶端程式碼
public class SimpleFactoryDemo {
public static void main(String[] args) {
// 建立圓形
Shape circle = ShapeFactory.createShape("circle");
circle.draw();
// 建立矩形
Shape rectangle = ShapeFactory.createShape("rectangle");
rectangle.draw();
}
}
案例簡析
這就好比如我手上只有一支筆,只需要在畫圖工具介面上選擇什麼形狀就可以畫什麼形狀。
如果某天我想加入五角星形,那需要新增五角星形類和修改工廠類即可。
如果某天我想刪除矩形,只需要修改工廠方法即可,甚至都不要刪除Rectangle
類
簡單工廠模式的優缺點
優點:
封裝了物件的建立過程:客戶端程式碼只需要呼叫工廠的 createShape()
方法,不需要知道具體的產品類的構造過程。便於擴充套件:只需要擴充套件新的產品類,並在工廠中增加相應的建立方法即可。
缺點:
工廠類職責過重:隨著產品種類的增多,工廠類會變得非常龐大且難以維護,因為工廠類需要處理所有型別的例項化。 不符合開閉原則:每增加一個新的產品類,都需要修改工廠類,違反了開閉原則。
總結
簡單工廠模式是一種透過一個工廠類來建立不同型別物件的模式,客戶端不需要關心物件的建立過程,只需要呼叫工廠方法來獲取所需的物件
。它適用於物件較少且不會頻繁變動的場景。隨著產品型別的增加,簡單工廠模式可能變得難以維護,因此對於複雜的情況,通常會考慮使用工廠方法模式或抽象工廠模式。
什麼是設計模式?
單例模式及其思想
設計模式--原型模式及其程式設計思想
掌握設計模式之生成器模式
超實用的SpringAOP實戰之日誌記錄
2023年下半年軟考考試重磅訊息
透過軟考後卻領取不到實體證書?
計算機演算法設計與分析(第5版)
Java全棧學習路線、學習資源和麵試題一條龍
軟考證書=職稱證書?
軟考中級--軟體設計師毫無保留的備考分享