簡單工廠,抽象工廠,工廠方法區別

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;
        }
    }
View Code

 

 

2.工廠方法模式:

定義一個抽象工廠類,在這個抽象工廠類中負責制定一些規範,將實際創建產品工作放到到子類當中。核心工廠類不再負責產品的創建,這樣核心類成爲一個抽象工廠角色,僅負責具體工廠子類必須實現的接口,相對於簡單工廠來說可以使系統在不修改工廠的情況下,引進新的產品。每個具體工廠類只能創建一個具體產品類的實例。

 

構成:

一個抽象產品類,可以派生出多個具體產品類。

一個抽象工廠類,可以派生出多個具體工廠類。

 

 

 

3.抽象工廠模式

 

 

抽象工廠模式是指當有多個抽象角色時,使用的一種工廠模式。抽象工廠模式可以向客戶端提供一個接口,使客戶端在不必指定產品的具體的情況下,創建多個產品族中的產品對象。相對於工廠方法模式來說,抽象工廠有多個抽象產品類,每個具體工廠類可以創建多個具體產品類的實例。而不是像工廠方法那樣,一個工廠只能創建一個產品。

 

構成:

多個抽象產品類,每個抽象產品類可以派生出多個具體產品類。

一個抽象工廠類,可以派生出多個具體工廠類。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章