1. 程式人生 > >設計模式之簡單工廠模式(SimpleFactoryPattern)

設計模式之簡單工廠模式(SimpleFactoryPattern)

1.定義

      •  簡單工廠模式屬於建立型模式,又叫作靜態工廠方法模式,這是由一個工廠物件決定創建出哪一種產品類的例項。

      • 現實生活中,工廠是負責生產產品的;同樣在設計模式中,簡單工廠模式我們可以理解為負責生產物件的一個類,稱為“工廠類”。

2.模式原理

      2.1 模式組成

組成(角色)

關係

作用

抽象產品類(Product)

具體產品的父類

描述產品的公共介面

具體產品類(Concrete Product)

抽象產品的子類;工廠類建立的目標類

描述具體的產品

工廠類(Factory)

簡單工廠模式的核心類

被外界直接呼叫,根據條件建立所需的產品物件

 2.2  模式UML圖解

                                                        UML圖

 2.3使用步驟

           •   建立一個抽象產品類,定義具體產品的公共介面;

           •   建立具體產品類(繼承自抽象產品類),定義生產的具體產品;

           •   建立一個工廠類,它提供了一個靜態方法,可以根據不同的條件來建立不同具體產品的例項。

           •   客戶端呼叫工廠類,通過傳入不同的引數來完成不同具體產品例項的建立。

3.簡單工廠模式的簡單實現

     3.1  例項描述:

            假設有一個計算機的代工生產商,它目前已經可以代工生產聯想計算機了。隨著業務的拓展,這個代工生產商還要生產惠普和華碩的計算機。這樣我們就需要一個單獨的類來專門生產計算機,這就用到了簡單工廠模式。

     3.2   實現步驟

 步驟一:建立抽象產品類,定義具體產品的公共介面

public abstract class Computer {
    public abstract void start();
}

 步驟二:建立具體產品類(繼承抽象產品類),定義生產的具體產品

public class LenovoComputer extends Computer{
    @Override
    public void start() {
        System.out.println("聯想計算機啟動");
    }
}

public class HpComputer extends Computer{
    @Override
    public void start() {
        System.out.println("惠普計算機啟動");
    }
}

public class AsusComputer extends Computer{
    @Override
    public void start() {
        System.out.println("華碩計算機啟動");
    }
}

步驟三:建立一個工廠類,供外部呼叫,通過靜態方法從而根據傳入的不同的引數建立不同具體產品類的例項

public class ComputerFactory {
    public static Computer createrComputer(String type) {
        Computer mComputer = null;
        switch (type) {
            case "lenovo":
                mComputer = new LenovoComputer();
                break;
            case "hp":
                mComputer = new HpComputer();
                break;
            case "asus":
                mComputer = new AsusComputer();
                break;
        }
        return mComputer;
    }
}

步驟四:客戶端呼叫工廠類

public class CreateComputer {
    public static void main(String[] args) {
        ComputerFactory.createrComputer("hp").start();
    }
}

4.簡單工廠模式的優缺點

4.1  優點

  • 將建立例項的工作與使用例項的工作分開,使用者不必關心類物件如何建立,實現瞭解耦;
  • 把初始化例項時的工作放到工廠裡進行,使程式碼更容易維護。 更符合面向物件的原則 & 面向介面程式設計,而不是面向實現程式設計。

4.2  缺點

  • 工廠類集中了所有例項(產品)的建立邏輯,一旦這個工廠不能正常工作,整個系統都會受到影響;
  • 違背“開放 - 關閉原則”,一旦新增新產品就不得不修改工廠類的邏輯,這樣就會造成工廠邏輯過於複雜。
  • 簡單工廠模式由於使用了靜態工廠方法,靜態方法不能被繼承和重寫,會造成工廠角色無法形成基於繼承的等級結構。

5.簡單工廠模式的使用場景

  • 客戶如果只知道傳入工廠類的引數,對於如何建立物件的邏輯不關心時;
  • 當工廠類負責建立的物件(具體產品)比較少時。

相關推薦

設計模式簡單工廠模式SimpleFactoryPattern

1.定義       •  簡單工廠模式屬於建立型模式,又叫作靜態工廠方法模式,這是由一個工廠物件決定創建出哪一種產品類的例項。       • 現實生活中,工廠是負責生產產品的;同樣在設計模式中,簡單工廠模式我們可以理解為負責生產物件的一個類,稱為“工廠類”。 2.模

大話設計模式簡單工廠模式Java版

大話設計模式——第一章(簡單工廠模式)   題目:請用C++、Java、C#或VB.NET任意一種面嚮物件語言實現一個計算器控制檯程式,要求輸入兩個數和運算子號,得到結果。 import java.io.Console; import java.util.Scanner; /**

設計模式簡單工廠模式C#語言描述

嚴格意義上來說,簡單工廠模式並不屬於GoF的23種設計模式,但是它是學習其他工廠模式的基礎和前提條件。理解了簡單工廠模式,學習工廠方法模式和抽象工廠模式會比較容易一些。 簡單工廠模式的定義 定義一個工廠類,他可以根據不同的引數返回不同類的例項。通常情況下,被建立的類的例項通常都具有共同的父類。

設計模式簡單工廠模式simple factory pattern)

什麼是簡單工廠模式, 舉個不恰當的例子, 就說生產雪糕吧, 雪糕什麼形狀的都有, 有長方形,有圓形等等, 怎麼生產呢? 首先肯定是先造個機器, 然後弄幾個按鈕,上面依次寫上長方形, 圓形等等,我按長方形就給我出長方形的, 我按圓形的按鈕就給我出圓形的。 大概就是這樣接下來

C++ 設計模式——簡單工廠模式(SimpleFactoryPattern)

優點 工廠類是整個模式的關鍵.包含了必要的邏輯判斷,根據外界給定的資訊,決定究竟應該建立哪個具體類的物件.通過使用工廠類,外界可以從直接建立具體產品物件的尷尬局面擺脫出來,僅僅需要負責“消費”物件就可以了。而不必管這些物件究竟如何建立及如何組織的.明確了各自的職責和權利,有利於整個軟體體系結構的優化。

設計模式簡單工廠模式整理筆記

面向物件和麵向過程的區別:活字印刷術和 印刷術的區別。(借用大神的比喻,感覺很貼切,而且想像步到更好的了) 借用面試所寫的的 一個程式:輸入個位數的減減乘除,輸出結果。 初學者和大部分開發者所犯下錯誤

java 設計模式簡單工廠模式含樣例源碼

ace org build cep 說明 pad 客戶 enc trac 簡單工廠模式的目的:使得對象的創建和使用分離,降低系統耦合,對用戶隱藏類的實例創建細節 簡單工廠模式屬於創建型模式的一種 簡單工廠模式的定義:定義一個工廠類,它可以根據參數的不同返回不

設計模式 簡單工廠模式詳解

技術分享 接口 create [] 幫助 cut 小蘿莉 filter 類之間的關系 定義:從設計模式的類型上來說,簡單工廠模式是屬於創建型模式,又叫做靜態工廠方法(Static Factory Method)模式,但不屬於23種GOF設計模式之一。簡單工廠模式是由一個工廠

Asp.Net 設計模式 簡單工廠模式

相關 如果 cnblogs 獲取 自動 ber c# thread operation 主要思想:      public static Operation CreateFactory(string ope) { //實例化空父類,讓

設計模式簡單工廠模式

pos 示例 概念 font 代碼示例 情況 strong size span 概念    應用場景   一個類多個子類,也就是多態的情況,當我們 代碼示例設計模式之簡單工廠模式

設計模式簡單工廠模式(創建型)

== 邏輯 設計 技術分享 對象創建 代碼 extends 工廠類 font 定義 簡單工廠模式又稱靜態工廠模式。可以根據參數的不同返回不同類的實例。定義一個類來創建其它類的實例。 角色 簡單工廠模式包含如下角色 Factory:工廠角色 Product:抽象產品角色 Co

golang設計模式簡單工廠模式

簡單工廠模式 wiki: 簡單工廠模式並不屬於 GoF 23 個經典設計模式,但通常將它作為學習其他工廠模式的基礎,它的設計思想很簡單,其基本流程如下: 首先將需要建立的各種不同物件(例如各種不同的 Chart 物件)的相關程式碼封裝到不同的類中,這些類稱為具體產品類,而將它們公共的程式碼

設計模式簡單工廠模式學習

之前瀏覽了一遍大話設計模式,看的激情四射,感覺寫的很好,但是瞄了一遍感覺收穫不多,於是決定手敲遍各種模式程式碼,今天敲了一遍簡單工廠模式程式碼,收穫滿滿,獲益良多。 引用書中標題的一句話: 程式碼無錯就是優? --------------------------簡單工廠模式 首先是一個實現計算

設計模式簡單工廠模式( Simple Factory Pattern )

1. 簡單工廠模式( Simple Factory Pattern ) 目錄 簡單工廠模式( Simple Factory Pattern ) 模式動機 模式定義 模式結構 時序圖 程式碼分析 模式分析 例項

C#基礎 二十 設計模式簡單工廠模式及介面

前言       這幾天看了這些視訊進行了一些總結,我是打算先看完C#視訊然後繼續看設計模式這本書的,但是視訊中提到了一部分設計模式中的內容,那麼我也多少的總結一下吧,有助於後邊對設計模式的學習! 交流與互動

設計模式 - 簡單工廠模式

一、什麼是簡單工廠模式 簡單工廠模式(Simple Factory Pattern):又稱為靜態工廠方法(Static Factory Method)模式,它屬於類建立型模式。在簡單工廠模式中,一個抽象的產品類,可以派生出多個具體的產品類,它們都具有共同的父類。 我們再來看下簡單工廠模式的U

Java設計模式簡單工廠模式

工廠模式:就是我們最常用的例項化物件模式,是用工廠方法代替new操作的一種模式。 實現步驟:使用工廠物件,根據傳遞的引數建立物件 ex: /** * 簡單工廠模式:就是建立一個工廠專門用來new

Python設計模式簡單工廠模式

定義:不直接向客戶暴露物件建立的實現細節,而是通過一個工廠類來負責建立產品類的例項。 角色:工廠角色,抽象產品角色,具體產品角色。 優點:隱藏了物件建立程式碼的細節,客戶端不需要修改程式碼。 缺點:違反了單一職責原則,將建立邏輯集中到一個工廠裡面,當要新增新產品時,違背了開閉原則 程

C++設計模式簡單工廠模式

簡單工廠模式 一、定義 簡單工廠模式:又稱為靜態工廠方法模式,它屬於類建立型模式。在簡單工廠模式中,可以根據引數的不同返回不同類的例項。簡單工廠模式專門定義一個來負責其他類的例項,被建立的例項通常都具有

大話設計模式簡單工廠模式

該部落格主要參考內容如下: 什麼是簡單工廠模式  簡單工廠模式(Simple Factory Pattern):又稱為靜態工廠方法(Static Factory Method)模式,它屬於類建立型模式。在簡單工廠模式中,可以根據引數的不同返回不同類的例項。簡單工廠