【工厂模式】与【策略模式】的区别


一、结论

工厂模式:工厂方法模式让一个类实例化延迟到其子类。
策略模式:策略模式让算法可以独立于使用它的客户而变化。
工厂模式人话:只管帮你建,不管你咋用。
策略模式人话:只管帮你用,不管你咋建。

二、正文

1.UML图(由IDEA生成)

工厂模式:
工厂模式UML图
策略模式:
策略模式UML图

2.代码


github完整代码

工厂模式client main代码:
工厂模式client main代码
蓝框内是工厂负责的内容,即帮client创建对象。红框内调用CashStrategy的acceptCash方法是需要client自己负责的。

策略模式client main代码:
策略模式client main代码
蓝框内是策略模式负责的内容,即帮助client使用Strategy对象(通过Conetxtd的acceptCash()调用Strategy的acceptCash()),但具体的Strategy对象需要client自己通过各种方法获得即红框中的内容。


总结

工厂模式与策略模式很像(其实和策略模式最像的是简单工厂)但两种模式解决的问题不一样。一个是对象过程进行封装即帮助client去new一个对象,并不管client拿到对象后具体怎么用。一个是对“算法”进行封装,即帮助client使用其拥有的某个对象,并不负责帮client拿到那个对象。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值