java设计模式-策略模式

Posted ghsy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java设计模式-策略模式相关的知识,希望对你有一定的参考价值。

  第一次好好的看设计模式,可能有不对的地方,大佬们可以下面指出,感谢!

  ----------- 分割线 ----------

  场景:商城打折活动,但是我不确定是打几折,因为换季可能打折力度不一样,8折,9折,满300减50等等等等,这时候我们去计算用户的实际消费数额,这个时候可以用上策略模式;把计算这个过程策略化。

首先是父类,这是个抽象算法,我们先抽象定义个算法方法:

技术图片

打折分为打几折,我们只需要将打折类构造器传入参数即可实现打几折还是原价的实现,满减这时候需要两个参数,满多少,减多少,改造下构造方法;

打折类:

技术图片

满减类:

技术图片

定义操作类context:

技术图片

程序调用:

技术图片

技术图片

ok,简单的策略模式就完成了。但是问题来了,这个场景的打折和满减力度都是不确定的,我们是不是能结合工厂来改造下这个context呢?答案是肯定的,我们把context里面初始化Operation工厂化就ok啦,用上上一篇的工厂模式,策略+工厂结合。

技术图片

改造红框部分即可,策略模式到此结束啦,后期如果有应用,我会重新补充此博客。

 附上个人理解和工厂模式的区别:

 技术图片

 

以上是关于java设计模式-策略模式的主要内容,如果未能解决你的问题,请参考以下文章

java设计模式---策略模式(案例解析)

《JAVA与模式》之策略模式

java策略模式应用场景为何?

Java 设计模式—策略模式

Java设计模式-策略模式

Java设计模式之策略模式