smartwgd 2008-11-23 19:14
浏览 351
已采纳

策略模式和工厂模式有啥区别呢?

google的结果:

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

 

里面还特意说了,(Strategy 适合下列场合: 1.以不同的格式保存文件;)

 

我现在就要做文件的下载,csv xml pdf xls 四种格式。

 

使用工厂模式:

客户端类+工厂类+接口类+4个具体实现类 总共7个类

使用策略模式:

客户端类+调用那个接口的类+工厂类+接口类+4个具体实现类 总共8个类

 

而且也没发现策略比工厂哪里更好一些。。。谁来帮忙解读一下啊?谢谢啦~~


问题补充
那还是工厂算了。。。感觉确实都一样。。。
  • 写回答

6条回答 默认 最新

  • JesorKist 2008-11-23 19:14
    关注

    你这两个方法有什么区别呢?
    差的就是那个“调用那个接口的类”。

    方法一与方法二都是用工厂生产策略,有什么实质的区别吗?

    方法二只是客户端把调用委托给了另一个类,有时候这是个好的设计,但你真的需要如此吗?

    策略模式能和工厂模式区别开来吗?一个注重对象的行为,一个注重对象的创建,有区别的必要吗?

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?

悬赏问题

  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?
  • ¥15 乘性高斯噪声在深度学习网络中的应用
  • ¥15 运筹学排序问题中的在线排序
  • ¥15 关于docker部署flink集成hadoop的yarn,请教个问题 flink启动yarn-session.sh连不上hadoop,这个整了好几天一直不行,求帮忙看一下怎么解决
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛