1.簡單工廠:設計模式
簡單工廠模式也叫靜態工廠模式,在工廠類中包含了邏輯判斷,根據客戶端的選擇來動態建立實例,去除了客戶端對具體產品的依賴。可是若是須要添加新的產品,就須要修改工廠類,因此簡單工廠違背了設計模式中的開閉原則,因此說簡單工廠並不屬設計模式。ide
構成:spa
一個包含邏輯判斷的具體工廠類;設計
一個抽象產品類,能夠派生多個具體的產品類。code
public class OperationFactory { /// <summary> /// 根據傳入的參數,建立對應的實例 /// </summary> /// <param name="operate">計算符號,加減乘除</param> /// <returns>返回對應的實例</returns> public static Operation getOperation(string operate) { Operation operation = null; switch (operate) { case "+": operation = new 加法(); break; case "-": operation = new 減法(); break; case "*": operation = new 乘法(); break; case "/": operation = new 除法(); break; } return operation; } }
2.工廠方法模式:對象
定義一個抽象工廠類,在這個抽象工廠類中負責制定一些規範,將實際建立產品工做放到到子類當中。核心工廠類再也不負責產品的建立,這樣核心類成爲一個抽象工廠角色,僅負責具體工廠子類必須實現的接口,相對於簡單工廠來講能夠使系統在不修改工廠的狀況下,引進新的產品。每一個具體工廠類只能建立一個具體產品類的實例。blog
構成:接口
一個抽象產品類,能夠派生出多個具體產品類。get
一個抽象工廠類,能夠派生出多個具體工廠類。
string
3.抽象工廠模式
抽象工廠模式是指當有多個抽象角色時,使用的一種工廠模式。抽象工廠模式能夠向客戶端提供一個接口,使客戶端在沒必要指定產品的具體的狀況下,建立多個產品族中的產品對象。相對於工廠方法模式來講,抽象工廠有多個抽象產品類,每一個具體工廠類能夠建立多個具體產品類的實例。而不是像工廠方法那樣,一個工廠只能建立一個產品。
構成:
多個抽象產品類,每一個抽象產品類能夠派生出多個具體產品類。
一個抽象工廠類,能夠派生出多個具體工廠類。