天天看點

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

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

什麼是簡單工廠?

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

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

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

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

    第三步:簡單工廠,即執行個體化子類,傳回子類;(如new CashNormal)

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

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

什麼是政策模式?

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

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

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

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

    第三步:政策模式,即執行個體化子類,傳回子類的方法;(如new CashNormal)

    第四步:用戶端:1、通過政策模式,确定收費類型,并傳回結果。(return cs.acceptCash(money))

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

政策模式 VS. 簡單工廠

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

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

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

感受:

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

繼續閱讀