【設計模式】策略模式 VS. 簡單工廠

    學習了設計模式的前兩章,對簡單工廠模式和策略模式做一下總結。

什麼是簡單工廠?

    簡單工廠是面向對象的過程,包括:封裝、繼承和多態。

    第一步:封裝,即抽象出超類;(現金收費抽象類)

    第二步:繼承,即子類繼承超類;(繼承“現金收費抽象類”得到“正常收費子類、打折收費子類、返利收費子類”)

                  多態,體現在這些不同的子類中,如用同樣的acceptCash方法,分別作用於“正常收費子類、打折收費子類、返利收費子類”,Return不同的結果。

    第三步:簡單工廠,即實例化子類,返回子類;(如new CashNormal)

    第四步:客戶端:1、通過工廠確定收費類型;(return cs)2、通過應用收費類型的方法,返回結果。

什麼是策略模式?

    策略模式是在簡單工廠的基礎上,進一步封裝變化得到的。

    第一步:封裝,即抽象出超類;(現金收費抽象類)

    第二步:繼承,即子類繼承超類;(繼承“現金收費抽象類”得到“正常收費子類、打折收費子類、返利收費子類”)

                  多態,體現在這些不同的子類中,如用同樣的acceptCash方法,分別作用於“正常收費子類、打折收費子類、返利收費子類”,Return不同的結果。

    第三步:策略模式,即實例化子類,返回子類的方法;(如new CashNormal)

    第四步:客戶端:1、通過策略模式,確定收費類型,並返回結果。(return cs.acceptCash(money)



策略模式 VS. 簡單工廠

    策略模式是優化簡單工廠得到的,在兩種模式都適合時,那麼理所應當的,策略模式要比簡單工廠強。

    但是,簡單工廠的應用比較廣泛。策略模式是封裝變化的,也就是說在遇到“在不同時間應用不同業務”這樣的變化的情況時,應用策略模式來封裝這些變化,使得客戶端耦合度降低,此種情況下會比簡單工廠強。

    從以上的兩幅圖中,大家也可以看出不同來,簡單工廠是依賴,而策略模式是聚合。簡單工廠依賴了所有子類,而父類聚合出了Context,顯然,策略模式的耦合要明顯降低。

感受:

    學習設計模式,感覺很有意思。他的思維方式很值得我們學習,但是,要想理解他,需要我們反覆學習。就前兩章,我就反覆理解了好幾遍,纔有了點頭緒,體會到了其中的滋味。之前,我花兩天時間瀏覽了正本書,感覺其他設計模式都和簡單工廠有關係,故在前兩章停留的時間長了一些,之後,我也該加快腳步了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章