1 簡單工廠模式

2022-06-05 23:24:16 字數 2125 閱讀 6775

介面是用來封裝隔離具體的實現的,目標就是不要讓客戶端知道封裝體內部的具體實現。

簡單工廠的位置是位於封裝體內的,所以簡單工廠知道具體類的實現是沒有關係的。

對於客戶端來說,只是知道了介面和簡單工廠。

優點:工廠類含有必要的判斷邏輯,可以決定在什麼時候建立哪乙個產品類的例項,客戶端可以免除直接建立產品物件的責任,而僅僅"消費"產品。簡單工廠模式通過這種做法實現了對責任的分割。

缺點:當產品有複雜的多層等級結構時,工廠類只有自己,以不變應萬變,就是模式的缺點。因為工廠類集中了所有產品建立邏輯,一旦不能正常工作,整個系統都要受到影響。同時,系統擴充套件困難,一旦新增新產品就不得不修改工廠邏輯,有可能造成工廠邏輯過於複雜。另外,簡單工廠模式通常使用靜態工廠方法,這使得無法由子類繼承,造成工廠角色無法形成基於繼承的等級結構。

應用場景:

如果想要完全封裝隔離具體實現,讓外部只能通過介面來操作封裝體,則可以選用簡單工廠。客戶端通過工廠來獲取相應的介面,而無需關心具體的實現。

如果想要把對外建立物件的職責集中管理和控制,可以選用簡單工廠。

例(計算器):

/// /// 數字b

///

public double numberb

set}

/// /// 得到運算結果

///

///

public virtual double getresult()

}/// /// 加法類

///

class operationadd : operation

}/// /// 減法類

///

class operationsub : operation

}/// /// 乘法類

///

class operationmul : operation

}/// /// 除法類

///

class operationdiv : operation

}/// /// 平方類

///

class operationsqr : operation

}/// /// 平方根類

///

class operationsqrt : operation

}/// /// 相反數類

///

class operationreverse : operation

}/// /// 運算類工廠

///

class operationfactory

case "-":

case "*":

case "/":

case "sqr":

case "sqrt":

case "+/-":

}return oper;}}

}

using system;

using system.collections.generic;

using system.text;

using operationlibrary;

namespace 計算器控制台

catch (exception ex)}}

}

例(商場**)(**略):

當我們涉及到商場**此類程式時,發現簡單工廠模式可以解決正常收費,打折收費,返利收費等業務,甚至可以新增擴充套件達到一定積分領獎品等業務,但是簡單工廠模式只是解決物件的建立問題。而且由於工廠本身包括了所有的收費方式,商場是可能是經常性更改打折額度和返利額度,每次維護和擴充套件收費方式都要改動這個工廠,以致**需要重新編譯部署,真的是很糟糕的處理方式,因此它不是最好的處理辦法,面對演算法的時常變動,應該採用更好的解決辦法(策略模式)

1 簡單工廠模式

工廠類61 到底要例項化誰,將來會不會增加例項化的物件,比如增加開跟運算,這是很容易變化的地方,62 應該考慮用乙個單獨的類來做這個創造例項的過程,這就是工廠 63template class t 64class operationfactory 6574 else if operate 75 78...

1 簡單工廠模式

一 做乙個商場收銀軟體 二 code using system namespace web.策略模式 正常收費子類 class cashnoraml cashsuper 打折收費子類 public class cashrebate cashsuper 返回折扣 原價 public override ...

1 簡單工廠模式

簡單工廠模式 factory pattern 又稱為靜態工廠方法 static factory method 模式,它屬於類建立型模式。在簡單工廠模式中,可以根據引數的不同返回不同類的例項。簡單工廠模式專門定義乙個類來負責建立其他類的例項,被建立的例項通常都具有共同的父類。當我們需要使用乙個物件時,...