工廠模式】:
定義乙個用於建立物件的介面, 讓子類決定例項化哪乙個類。factory method使乙個類的例項化延遲到其子類。
適用性當乙個類不知道它所必須建立的物件的類的時候。
當乙個類希望由它的子類來指定它所建立的物件的時候。
當類將建立物件的職責委託給多個幫助子類中的某乙個,並且你希望將哪乙個幫助子類是**者這一資訊區域性化的時候。
以簡單計算器為例:
【簡單工廠實現】:
//【簡單工廠類】
class
operationfactory
return
oper;}}
//【運算類】
abstract
class
operation
class
operationadd
:operation
}class
operationsub
:operation
}class
operationmul
:operation
}class
operationdiv
:operation
}//【客戶端**】
class
}工廠模式實現
【工廠模式】:
using
system;
//【運算類】
abstract
class
operation
//運算基類;
class
operationadd
:operation
//加法;
}class
operationsub
:operation
//減法;
}class
operationmul
:operation
//乘法;
}class
operationdiv
:operation
//除法;
}//【factory介面】
inte***ce
ifactory
//【工廠類】
class
addfactory
:ifactory
//加法工廠類
}class
subfactory
:ifactory
//減法工廠類
}class
mulfactory
:ifactory
//乘法工廠類
}class
divfactory
:ifactory
//除法工廠類
}//【客戶端**】
class
}簡單工廠模式的最大優點在於
:工廠類中包含了必要的判斷邏輯,根據客戶端的選擇條件動態例項化相關的類,對於客戶端來說,去除了與具體產品的依賴。
工廠方法模式實現時,客戶端需要決定例項化哪乙個工廠來實現運算類,選擇判斷的問題還是存在,也就是說,工廠方法把簡單工廠的內部邏輯判斷移到了客戶端**來進行。你想要加功能,本來是改工廠類的,現在只改客戶端了。
工廠方法模式
克服了簡單工廠模式違背開放-封閉原則,又保持了封裝物件建立過程的優點。工廠方法模式是簡單工廠模式的進一步抽象和推廣。
簡單工廠模式和工廠模式
在對比兩種模式之前,首先需要學習 開放 封閉原則。在以前學習的過程中,聽說過很多次,編寫程式要遵循開閉原則。在做專案的過程中,因為需求的新增,經常會更新軟體。更新軟體,就要設計到修改 了。在物件導向的程式設計中,經常會寫類。如果因為新增需求,去修改已經完成的類。那麼他是不符合開閉原則的。新增需求,應...
簡單工廠和工廠模式
設計模式泛泛談 想要實現依賴倒轉規則,工廠方法不是唯一的技巧。工廠模式或者抽象工廠應該是重構時使用的。怎麼感覺有點 fp 中的高階函式的味道!簡單工廠和工廠模式的區別 區別其實不大。但是工廠模式能對修改閉合,以前的 保證不會出問題。不會出現新增的功能測試沒問題,已有的功能莫名其妙就掛掉的情況。所以真...
簡單工廠模式和工廠模式見解
簡單工廠模式是23種設計模式的一種,給人最直觀的感受就是我可以根據我輸入的資料建立不同的物件,但是這個物件必須實現相同的方法。那我們可不可以理解成就是乙個物件裡面我重寫了若干個方法,這個方法除了方法體不一樣其他都一樣,貌似這樣理解也沒錯,只是簡單工廠模式將其具體化了。public inte ce o...