三分鐘理解「簡單工廠模式」 設計模式輕鬆掌握

2021-07-04 23:11:21 字數 1051 閱讀 1135

實際問題:

由於超市隔三差五就要辦**活動,但每次**活動的方式不一樣,所以需要開發乙個軟體,營業員只要輸入原價再選擇活動型別後,就能計算出折扣以後的價錢。

普通人的做法:

mian()

這樣寫會有幾個問題:

1.若現在增加新的打折方式,就要修改這段**,這就打破了「開放-封閉」的原則。

2.這段**不易復用。當這個收銀系統的其他地方也需要計算折後價的時候,只能將這段**複製過去;那如果在維護中發現開發人員把「滿100返50」寫成了「滿10000返50」,這時候就需要改兩個地方,非常不便。

所以高階做法是:

1.將這乙個個折扣抽象成類,這樣方便**的復用;

2.將對不同折扣的判斷從客戶程式中轉移到被呼叫類中,從而降低客戶程式中**的複雜度。

高階做法的類圖:

1.此時,對**型別的判斷從客戶端轉移到了factory類中,從而使用者程式只需要給factory的get**類()函式傳入乙個**名稱就能夠獲取該**類的物件。

2.**如上圖構造之後,要獲取**類物件,只需要呼叫:

**類 **物件 = factory.get**類("**名稱");

折後價 price = **物件.getresult(原價);

工廠模式的作用:

工廠是用來管理、建立物件的。

如果乙個類會根據情況的不同產生含有不同屬性值的物件,或者乙個類會根據情況的不同產生不同的子類物件,這時候需要使用工廠模式,在工廠中完成究竟建立哪種型別的物件的判斷,客戶端只需在factory.getbean(key)函式中傳入乙個key,就能夠獲取對應型別的物件。

因此,工廠模式能夠將「客戶端對究竟建立何種型別的判斷」轉移到factory中,從而減少客戶端**的複雜度,降低服務端與客戶端之間的藕合度。

三分鐘理解「享元模式」 設計模式輕鬆掌握

享原模式的官方定義 運用共享技術有效地支援大量細粒度的物件。大白話講 乙個類它可能生成好多物件,但這些物件根據屬性值的不同一共分成n類,每種型別中屬性值都是一樣的。在這種情況下,如果建立好多物件,那麼這些物件中很多屬性值都是重複的,從而造成了大量的記憶體浪費。而享元模式能夠解決重複物件的記憶體浪費的...

三分鐘理解Python lambda

這篇主要是複習一下 lambda表示式是一種匿名函式,對應python中的自定義函式def。定義func函式,計算給定數x的平方 def func x return x x 等價於 func lambda x x x 用法,他就是乙個函式,像正常函式那樣呼叫就好 func 6 可以看到,lambda...

《三分鐘理解大小端》

無論筆試還是面試都有一定機率問怎麼判斷大小端,那麼你就很自豪的回答,大端就是資料高位元組放在低位址上,小端就是資料低位元組放在低位址上。好了您回答了這個恭喜下面讓你 實現一下,這個時候很多只是死記硬背的缺陷就會暴露出來。其實 的實現很多方法都是可以的,下面舉例最簡單的一種,就是初始化乙個16進製制的...