設計模式 簡單工廠和策略模式

2021-06-20 02:14:07 字數 929 閱讀 8337

模式的核心是工廠類,這個類負責產品的建立,而客戶端可以免去產品建立的責任,這實現了責任的分割。但由於工廠類集中了所有產品建立邏輯的,如果不能正常工作的話會對系統造成很大的影響。如果增加新產品必須修改工廠角色的原始碼改工廠角色的原始碼。

個人理解就是在乙個工廠內(工廠類),定義好規範標準(父類,虛方法),然後同工種各司其職(子類)。然後老闆(客戶端)在說要生產啥,咱就幹啥。當然為了增加靈活性,可以引進不同產線,這樣就需要選擇(選擇演算法)。

工廠類最大的貢獻就是低耦合,這樣修改起來風險小,但是相對的維護閱讀難度加大,如果有完整的功能說明書或者uml圖,那將會很省事。在開發c/s系統時,後台為c++等程式時,工廠類的想法其實很是方便,將後台功能函式分為3層,就能做到較好的耦合性。當然最好比避免不同功能的重複呼叫,否則只能是導致最後牽一發動全身。工廠類很適合一些業務邏輯的編寫,如果別人已經封裝過的程式,你最好不要再用工廠類了,否則層層呼叫,反而增加了以後的維護難度。

策略模式(strategy):它定義了演算法家族,分別封裝起來,讓他們之前可以互相替換,此模式讓演算法的變化,不會影響到實用演算法的客戶。

策略模式會用到抽象,就是abstract和override。所以聚合相同屬性和功能才能形成乙個類。

策略模式將演算法和選擇分開,這點和工廠類似,但是演算法可以復用的,工廠工人卻最好只能完成一項工作。在復用的情況下,當然呼叫規則要明確啦,而且是解決同一類的事情。當面對需求修改時,策略不變,修改演算法即可了。一改百改,方便又實用,而且單元測試也方便。

策略模式和簡單工廠類有點類似,但是更講究復用和聚合,個人覺得側重點不同。

設計模式 簡單工廠模式 策略模式

名詞理解 工廠 factory 模式我們可以做如下理解,假設有乙個audi的公司生產汽車 似乎也不用假設了 它掌握一項核心的技術就是生產汽車,另一方面,它生產的汽車是有不同型號的,並且在 不同的生產線上進行組裝。當客戶通過銷售部門進行預定後,audi公司將在指定的生產線上為客戶生產出它所需要的汽車。...

設計模式之簡單工廠模式和策略模式

簡單工廠模式將物件的建立與使用解耦,由工廠負責建立具體物件,應用需要物件時只需呼叫工廠類的api即可。比如編寫乙個計算器 可使用工廠模式 如上圖所示,加減乘除分別繼承operation類,重寫getresult方法。compute ctory為工廠類 public class compute cto...

設計模式之簡單工廠模式,工廠模式,策略模式

簡單工廠模式 的最大優點是在工廠類中包含了必要的邏輯判斷,根據客戶端的選擇動態例項化相關類,去得到客戶想要的產品。但個人覺得簡單工廠模式的最大優點正是產生它最大缺點之處。因為它的工廠類違反了開放 封閉原則 類,模組,方法等對於擴充套件是開放的,對於更改是封閉的。每當新增乙個功能,我們就需要去修改它的...