1.簡單工廠:
簡單工廠模式也叫靜態工廠模式,在工廠類中包含了邏輯判斷,根據客戶端的選擇來動態創建實例,去除了客戶端對具體產品的依賴。但是如果需要添加新的產品,就需要修改工廠類,所以簡單工廠違背了設計模式中的開閉原則,所以說簡單工廠並不屬設計模式。
構成:
一個包含邏輯判斷的具體工廠類;
一個抽象產品類,可以派生多個具體的產品類。
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.工廠方法模式:
定義一個抽象工廠類,在這個抽象工廠類中負責制定一些規範,將實際創建產品工作放到到子類當中。核心工廠類不再負責產品的創建,這樣核心類成爲一個抽象工廠角色,僅負責具體工廠子類必須實現的接口,相對於簡單工廠來說可以使系統在不修改工廠的情況下,引進新的產品。每個具體工廠類只能創建一個具體產品類的實例。
構成:
一個抽象產品類,可以派生出多個具體產品類。
一個抽象工廠類,可以派生出多個具體工廠類。
3.抽象工廠模式
抽象工廠模式是指當有多個抽象角色時,使用的一種工廠模式。抽象工廠模式可以向客戶端提供一個接口,使客戶端在不必指定產品的具體的情況下,創建多個產品族中的產品對象。相對於工廠方法模式來說,抽象工廠有多個抽象產品類,每個具體工廠類可以創建多個具體產品類的實例。而不是像工廠方法那樣,一個工廠只能創建一個產品。
構成:
多個抽象產品類,每個抽象產品類可以派生出多個具體產品類。
一個抽象工廠類,可以派生出多個具體工廠類。