16設計模式 策略模式與工廠方法模式的區別

2021-10-24 01:59:33 字數 660 閱讀 3573

本來想先寫策略模式的實現,然後再寫與工廠方法的區別。但想到我曾經在剛接觸到這兩種模式時看了不少資料和**都搞不明白,直到理解了兩者使用場景的區別,才看明白兩種模式的**。

所以,我決定直接通過案例來分享策略模式和工廠方法在使用場景上的區別。

我們模擬「電力公司」的場景來比較兩種模式:

場景一:

假設一家電力公司下屬有多家發電廠,包括:火力發電廠、水力發電廠等。我們是的電力公司的排程員,負責分配每家發電廠的發電任務。

比如:冬天水力不足,水力發電成本高且產能有限。我們就停止水力發電,採用火力發電。反之,在夏天,我們就停止火力發電,採用水力發電。(說明:這個排程方案只是為了說明設計模式而做的假設,現實中的排程情況不可能這麼極端,請不要糾結於此)

本場景就可以使用策略模式:用策略模式對發電廠的介面進行封裝,排程員不需要關注每種發電廠具體怎麼發電。但他知道他所排程的發電廠是火力發電廠,還是水力發電廠。

場景二:

假設我們是普通用電的使用者。比如:我們家裡有各種家用電器,電力公司為我們的家庭供電。我們只需要將家用電器插頭插入電源插座用電即可。

本場景就可以使用工廠方法模式:用工廠方法模式對電力的介面進行封裝,使用者完全不需要知道他所用的電是哪家電力公司提供的,也不需要知道是火力發電廠發的,還是水力發電廠發的。

簡單工廠模式 策略模式與工廠方法模式

用三種設計模式實現同一種功能 四則運算。三種設計模式相同的部分為四則運算類的設計,包括基類,加法運算類,減法運算類,乘法運算類和除法運算類,其 如下 class cclac class cclacadd public cclac class cclacsub public cclac class c...

設計模式 工廠方法模式與抽象工廠模式

這兩天抽空學習一下設計模式,剛開始遇到工廠模式,感覺工廠方法模式和抽象工廠模式的區別有點模糊,看了之前的面試資料也是有點區分不清,於是查閱一些網上的資料和部落格,記錄一下。1,工廠方法模式 定義乙個用於建立物件的介面,讓子類決定例項化哪乙個類,工廠方法使得乙個類的例項化延遲到了子類 工廠方法在簡單工...

設計模式 工廠方法模式

一 工廠方法 factory method 模式 工廠方法模式的意義是定義乙個建立產品物件的工廠介面,將實際建立工作推遲到工廠子類當中。核心工廠類不再負責產品的建立,這樣核心類成為乙個抽象工廠角色,僅負責具體工廠子類必須實現的介面,這樣進一步抽象化的好處是使得工廠方法模式可以使系統在不修改具體工廠角...