大話設計模式——簡單工程模式

設計模式:簡單工程模式

定義以及結構

定義

​ 簡單工程模式屬於創建型模式,又稱爲靜態工程方法模式,在簡單工程模式中,可以根據參數的不同,來返回不同類的實例,靜態工廠模式專門定義一個類來負責創建子類的實例,被創建的子類通常有一個共同的父類

結構圖

一般分爲三類:

  • Factory:工廠類,簡單工程模式的核心,它負責實現創建所有實例的內部邏輯。工廠類的創建產品類的方法可以被外界直接調用,用來創建所需的產品對象。
  • IProduce:抽象產品類,簡單工程模式所創建的所有對象的父類,它負責描述所有實例所共有的公共接口
  • Product:具體產品類,是簡單工程模式的目標類。

實現

​ 假設有一個筆類生產商,想生產不同的筆種,所以就需要用一個單獨的類來專門生產筆。

產品抽象類

public abstract class Pen {
   // 產品的抽象方法,由具體的產品類去實現
    public abstract void start();
}

具體實現類

public class Pencil extends Pen {
    @Override
    public void start(){
        System.out.println("pencil start!");
    }
}

public class Ballpen extends Pen {
    @Override
    public void start(){
        System.out.println("Ballpen start!");
    }
}

工廠類

public class PenFactory {
    public static  Pen creatPen(String type){
        Pen pen=null;
        switch(type){
            case "pencil":
                pen=new Pencil();
                break;
            case "ballpen":
                pen= new Ballpen();
                break;
            default:
                break;
        }
        return pen;
    }
}

測試

public class Test {

    public static void main(String[] args) {
        Pen pen=PenFactory.creatPen("pencil");
        pen.start();
    }
}

優缺點

優點

  • 工廠類含有必要的邏輯判斷,可以決定在上面時候創建哪一個產品類實例,客戶端可以免除之間創建產品對象的責任,而僅僅消費了產品,實現了對責任的分割。
  • 客戶端無序知道創建具體產品類的類名,只需知道對應的參數,方便創建
  • 通過引入配置文件,可以在不改變客戶端代碼的情況下,更換和增加新的具體產品類,在一定程度上提高了系統的靈活性。

缺點

  • 由於工廠類集中就所有產品的創建邏輯,一旦出現問題,整個系統都會受影響
  • 系統擴展困難,一旦添加新產品就必須要修改工廠邏輯,破壞了開閉原則,在產品較多的情況下,容易造成邏輯複雜不利於擴展以及維護
  • 簡單工廠模式由於使用了靜態工程方法,造成工程角色無法形成基於繼承的等級結構

適用場景

  • 工廠類負責創建的對象比較少,由於創建的對象較少,不會造成業務邏輯過於複雜
  • 客戶端只需要知道創建的參數,不需要關心如何實現

最後

  • 如果覺得看完有收穫,希望能給我點個贊,這將會是我更新的最大動力,感謝各位的支持
  • 歡迎各位關注我的公衆號【java冢狐】,專注於java和計算機基礎知識,保證讓你看完有所收穫,不信你打我
  • 如果看完有不同的意見或者建議,歡迎多多評論一起交流。感謝各位的支持以及厚愛。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章