【设计模式】策略模式 VS. 简单工厂

    学习了设计模式的前两章,对简单工厂模式和策略模式做一下总结。

什么是简单工厂?

    简单工厂是面向对象的过程,包括:封装、继承和多态。

    第一步:封装,即抽象出超类;(现金收费抽象类)

    第二步:继承,即子类继承超类;(继承“现金收费抽象类”得到“正常收费子类、打折收费子类、返利收费子类”)

                  多态,体现在这些不同的子类中,如用同样的acceptCash方法,分别作用于“正常收费子类、打折收费子类、返利收费子类”,Return不同的结果。

    第三步:简单工厂,即实例化子类,返回子类;(如new CashNormal)

    第四步:客户端:1、通过工厂确定收费类型;(return cs)2、通过应用收费类型的方法,返回结果。

什么是策略模式?

    策略模式是在简单工厂的基础上,进一步封装变化得到的。

    第一步:封装,即抽象出超类;(现金收费抽象类)

    第二步:继承,即子类继承超类;(继承“现金收费抽象类”得到“正常收费子类、打折收费子类、返利收费子类”)

                  多态,体现在这些不同的子类中,如用同样的acceptCash方法,分别作用于“正常收费子类、打折收费子类、返利收费子类”,Return不同的结果。

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

    第四步:客户端:1、通过策略模式,确定收费类型,并返回结果。(return cs.acceptCash(money)



策略模式 VS. 简单工厂

    策略模式是优化简单工厂得到的,在两种模式都适合时,那么理所应当的,策略模式要比简单工厂强。

    但是,简单工厂的应用比较广泛。策略模式是封装变化的,也就是说在遇到“在不同时间应用不同业务”这样的变化的情况时,应用策略模式来封装这些变化,使得客户端耦合度降低,此种情况下会比简单工厂强。

    从以上的两幅图中,大家也可以看出不同来,简单工厂是依赖,而策略模式是聚合。简单工厂依赖了所有子类,而父类聚合出了Context,显然,策略模式的耦合要明显降低。

感受:

    学习设计模式,感觉很有意思。他的思维方式很值得我们学习,但是,要想理解他,需要我们反复学习。就前两章,我就反复理解了好几遍,才有了点头绪,体会到了其中的滋味。之前,我花两天时间浏览了正本书,感觉其他设计模式都和简单工厂有关系,故在前两章停留的时间长了一些,之后,我也该加快脚步了。

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