java设计模式-策略模式

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

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

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

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

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

打折类:

满减类:

定义操作类context:

程序调用:

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

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

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

 

原文地址:https://www.cnblogs.com/ghsy/p/11047056.html