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

6 篇文章 0 订阅
6 篇文章 0 订阅

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

什么是简单工厂?

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

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

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

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

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

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

什么是策略模式?

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

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

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

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

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

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



策略模式 VS. 简单工厂

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

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

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

感受:

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

评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值