策略模式与工厂模式比较

这段时间看了一些设计模式,看到策略模式与工厂模式的时候,总是感觉他们很相似,不要区分,到具体的场景了你可能还在徘徊到底用工厂还是策略呢?这几天就想写一篇关于策略模式与工厂模式区别的文章,但一直没思路,昨天跟淘宝mm聊了聊,今天早上思路顿时开阔。


当时我在说明策略模式与工厂模式区别的时候举了一个例子。说你要去买件衣服,给你50块钱,策略模式的做法就是去京东、当当、淘宝、卓越等网上去看,然后决定要买那一件。而工厂模式的做法确实,告诉系统我需要用50块钱买件衣服,到底他去当当、淘宝、京东、卓越你不关心,你只需要50块钱的一件衣服。淘宝mm一语道出工厂相当于黑盒子,策略相当于白盒子。呵呵,佩服。总结得很精炼。今天早上醒来就在想这问题,老感觉昨天自己的比喻有点绕在概念之中,别人可能不认真分析可能还是很难理解他们的区别。所以就重新设计了一个小实例。

工厂模式:有一天你决定去吃披萨,一看菜单,哦,种类很多呀,你就点了个培根披萨,过了二十分钟,你的披萨就来了就可以吃到了。但这个披萨是怎么做的,到底面粉放了多少,培根放了多少,佐料放了多少,有多少到工序,你是不需要管的,你需要的是一个美味培根披萨。

策略模式:同样还是在披萨店,你要一个培根披萨,老板说想吃自己去做吧。原料有培根、面粉、佐料。工序有123工序,你自己去做吧。然后你就需要自己去做,到底放多少培根,放多少面粉,放多少佐料,这都你自己来决定,工序123,你是怎么实现的,都你自己决定。最后你得到了披萨。

一般情况下,策略模式是为了解决的是策略的切换与扩展,更简洁的说是定义策略族,分别封装起来,让他们之间可以相互替换,策略模式让策略的变化独立于使用策略的客户。可以应用的场景有优惠系统、工资计算系统等。上例中,你可以自己做多种口味的披萨的,青菜的,牛肉的,海鲜的你都可以一次都做。而工厂模式主要解决的是资源的统一分发,将对象的创建完全独立出来,让对象的创建和具体的使用客户无关主要应用在多数据库选择,类库文件加载等。上例中你可以点很多披萨,只要披萨店给提供的,你都可以点。很明显的是策略模式是开放的,作为一个主体你的活动范围是全程的,大多数事情要你自己亲力亲为。而工厂模式作是封闭的,作为主体的你的活动范围是有限的,很多事情都帮组你做好了,你直接“点”就可以了。


想到这里,我突然想云计算跟传统电脑模式的联系。

传统的电脑模式,你需要写程序,你得自己去装个eclips,你需要ps图片,你需要去装个photoshop,你需要看电影,你得装一个看电影软件。这就是典型的策略模式,什么东西必须你自己动手去实现。


而云计算,我需要写程序,云就跟你说,亲这里有eclips,你可以直接用了。你需要看电影,云就跟你说,亲,这里有pplive,你可以直接看电影,你需要美图,云说,亲,这里有美图秀秀,能帮你的照片变得很漂亮的哦。这就是典型的工厂模式。


  • 11
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 15
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值