java 策略模式和工厂模式区别_Java编程细节——什么是策略模式

策略模式应该是Java设计模式中最简单的一种模式,

它的核心思想是,一个类的行为可以在运行时动态改变,有不同的实现逻辑。

其实具体的说,它也是基于面向接口编程的思想,通过定义不同的实现类逻辑来做到的。

策略模式接口定义

比方说现在需要一个计算逻辑,对两个输入的数进行某种运算,

这里可以定义接口为:d308ec14a1b6f87d2aa2a91869218522.png

策略模式实现

现在如果需要实现加法和算法,只需要定义两个对应的类,实现接口就可以7d78a7902f654bb515692d76bbe98270.png

最后一步,策略模式需要一个策略类,954184d151d53bf1002076268ffeae9e.png

e0d1e1c8819acbd63438e26d9d9c43cf.png

划重点

到这里你可能会有些疑问,策略模式跟简单工厂模式有什么区别?

都是定义个接口,往一个Context/Factory类里传东西,然后执行抽象好的接口,

从代码层次来说一模一样啊?

这里来回顾下之前说的工厂模式,

设计模式之工厂模式

这里重点关注一个地方,

我们往 Context/Factory 的构造方法里穿的东西不同

· 策略模式

我们传的是构造好的执行对象, AddCaculator()

· 工厂模式

这里传的是不是对象,而是定义好的参数,比如 "add"

他俩的区别在于,策略模式需要调用者创建好执行逻辑的对象,而工厂模式只需要告诉工厂我们要创建什么。

这么说可能不够具体,你可以这么想象,

我们去了一个咖啡厅,想喝一杯咖啡,

策略模式的咖啡厅会说

想喝卡布奇诺还是拿铁,自己调好咖啡和奶的比例拿给他,他帮你在咖啡机上磨好装杯子里给你

工厂模式的咖啡厅会说

跟他说要卡布奇诺还是拿铁就行,你不需要关心咖啡豆的比例和制作过程,他帮你做好装杯子里给你

总结

策略模式跟工厂模式其实思想非常接近,

都是通过接口来去耦合,

而两者的区别也比较容易理解,

策略模式侧重于让调用者控制逻辑的实现,

工厂模式则侧重于让调用者不关心具体的逻辑,只关心需要用什么东西。d081e8a97e62593d54007ad2d90e0c46.png

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值