谁能够讲讲简单工厂模式和策略模式有什么本质区别?

wangmengfei 2008-03-26 05:12:30
谁能够讲讲简单工厂模式和策略模式有什么本质区别?
谢谢
...全文
1901 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
hamxyy 2011-10-18
  • 打赏
  • 举报
回复
设计模式是实践设计原则的
所有的设计原则都是围绕着一个观点那就是封装变化
如果把变化封装的足够好,我们就可以再变化到来的时候做最小的应对,也就是最小程度的改代码

模式就是一种经验,一种成熟的做法
抽象工厂模式用于创建对象时的变化
策略模式用于算法实现时的变化
他们本质上都是变化
LZ这个问题可谓学会了方法,但是不了解本质
封装变化最好的方法,就是依赖抽象,利用多态,面向接口编程
希望有帮助
ccchhhbbb 2011-05-15
  • 打赏
  • 举报
回复
回复16楼:
其实你已看到了两者的些许不同,简单工厂重的是对象,它不属于一种模式,和他相似的工厂模式属于创建型模式;而策略模式重的的行为,他也是扁平结构。举个不恰当的例子,你想一想抽象类和接口的侧重点一样吗?
zqnxt 2011-04-28
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 jameschen19 的回复:]
引用 4 楼 kisskiller 的回复:

策略模式:定义算法族,分别封装起来,让他们之间可以相互替换,此模式让算法的变化独立于使用算法的客户。
简单工厂:将对象的创建完全独立出来,让对象的创建和具体的使用客户无关。
简单工厂严格意义上不是一种设计模式,只能是一种良好的编程习惯。


我也不是很明白,不能将简单工厂所创建的对象理解成为策略模式中的各种算法吗,前者和后者都是继承于某……
[/Quote]

我与楼上有同感,觉得简单工厂中的对象与策略模式中的算法效果相同,策略模式只是在Context(简单模式工厂中的Factory)中添加了执行方法而已。不懂到底有什么区别。
jameschen19 2011-04-25
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 kisskiller 的回复:]

策略模式:定义算法族,分别封装起来,让他们之间可以相互替换,此模式让算法的变化独立于使用算法的客户。
简单工厂:将对象的创建完全独立出来,让对象的创建和具体的使用客户无关。
简单工厂严格意义上不是一种设计模式,只能是一种良好的编程习惯。
[/Quote]

我也不是很明白,不能将简单工厂所创建的对象理解成为策略模式中的各种算法吗,前者和后者都是继承于某一基类,被工厂或Context所创建,有什么区别?求解答
lyb1985031 2010-12-07
  • 打赏
  • 举报
回复
个人觉得,思想基本类似,作用不同而已~
tiwson 2009-02-02
  • 打赏
  • 举报
回复
学习了!感谢回答的各位大哥!
极地_雪狼 2009-01-21
  • 打赏
  • 举报
回复
简单工厂模式是创建的对象,且由该对象调用其内部的指定算法,主要是针对的对象之间的行为差异,单独封装
策略模式是针对的对象内部行为的算法,可以看作是一个集合,是允许多个策略实体进行叠加的。但工厂模式就不成。
javalead 2008-07-04
  • 打赏
  • 举报
回复
不太明白策率模式是什么,学习了。
Chins 2008-06-26
  • 打赏
  • 举报
回复
学习了
ruanguiquan 2008-04-23
  • 打赏
  • 举报
回复
学习的
wangwenjun69 2008-04-21
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 KissKiller 的回复:]
策略模式:定义算法族,分别封装起来,让他们之间可以相互替换,此模式让算法的变化独立于使用算法的客户。
简单工厂:将对象的创建完全独立出来,让对象的创建和具体的使用客户无关。
简单工厂严格意义上不是一种设计模式,只能是一种良好的编程习惯。
[/Quote]

严重支持这位大哥说的。很好,精辟
SINCE1978 2008-04-14
  • 打赏
  • 举报
回复
简单工厂侧重明确类的职责
策略侧重演示抽象类的使用
lllove 2008-04-11
  • 打赏
  • 举报
回复
这个两个模式区别大了哦。
dracularking 2008-04-10
  • 打赏
  • 举报
回复
实际整个Strategy的核心部分就是抽象类的使用,使用Strategy模式可以在用户需要变化时,修改量很少,而且快速。

  Strategy和Factory有一定的类似,Strategy相对简单轻易理解:

  Strategy适合下列场合:

  1.以不同的格式保存文件;

  2.以不同的算法压缩文件;

  3.以不同的算法截获图象;

  4.以不同的格式输出同样数据的图形,比如曲线 或框图bar等。

HollyKiller 2008-04-10
  • 打赏
  • 举报
回复
策略模式:定义算法族,分别封装起来,让他们之间可以相互替换,此模式让算法的变化独立于使用算法的客户。
简单工厂:将对象的创建完全独立出来,让对象的创建和具体的使用客户无关。
简单工厂严格意义上不是一种设计模式,只能是一种良好的编程习惯。
cancer2000 2008-04-09
  • 打赏
  • 举报
回复
前一个是创建模式,后一个是行为模式。
wanglovec 2008-03-27
  • 打赏
  • 举报
回复
区别很大哦,前一个解决的问题是 对象的创建

后一个封装一系列的算法 并使他们可以替换。
林g 2008-03-27
  • 打赏
  • 举报
回复
简单工厂和策略字面上有什么区别啊!
也就是简单的跟仔细的区别!

50,523

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧