当前位置:网站首页 > Java教程 > 正文

java狂暴模式教程



策略


策略模式:Strategy,是指,定义一组算法,并把其封装到一个对象中。然后在运行时,可以灵活的使用其中的一个算法。

策略模式在Java标准库中应用非常广泛,我们以排序为例,看看如何通过实现忽略大小写排序:

如果我们想忽略大小写排序,就传入,如果我们想倒序排序,就传入,这个比较两个元素大小的算法就是策略。

我们观察这个排序方法,它在内部实现了TimSort排序,但是,排序算法在比较两个元素大小的时候,需要借助我们传入的对象,才能完成比较。因此,这里的策略是指比较两个元素大小的策略,可以是忽略大小写比较,可以是倒序比较,也可以根据字符串长度比较。

因此,上述排序使用到了策略模式,它实际上指,在一个方法中,流程是确定的,但是,某些关键步骤的算法依赖调用方传入的策略,这样,传入不同的策略,即可获得不同的结果,大大增强了系统的灵活性。

策略 - 图2

一个完整的策略模式要定义策略以及使用策略的上下文。我们以购物车结算为例,假设网站针对普通会员、Prime会员有不同的折扣,同时活动期间还有一个满100减20的活动,这些就可以作为策略实现。先定义打折策略接口:

接下来,就是实现各种策略。普通用户策略如下:

满减策略如下:

最后,要应用策略,我们需要一个:

调用方必须首先创建一个DiscountContext,并指定一个策略(或者使用默认策略),即可获得折扣后的价格:

策略模式的核心思想是在一个计算方法中把容易变化的算法抽出来作为“策略”参数传进去,从而使得新增策略不必修改原有逻辑。

使用策略模式新增一种策略,允许在满100减20的基础上对Prime会员再打七折。

从下载练习: (推荐使用IDE练习插件快速下载)

策略模式是为了允许调用方选择一个算法,从而通过不同策略实现不同的计算结果。

通过扩展策略,不必修改主逻辑,即可获得新策略的结果。

策略 - 图4

  • 上一篇: java网站搭建教程
  • 下一篇: java 教程 最好
  • 版权声明


    相关文章:

  • java网站搭建教程2025-03-26 23:10:05
  • 毕向东java全套教程视频2025-03-26 23:10:05
  • java 破解 教程2025-03-26 23:10:05
  • java 加密 教程2025-03-26 23:10:05
  • java202教程2025-03-26 23:10:05
  • java 教程 最好2025-03-26 23:10:05
  • java 上传手机视频教程2025-03-26 23:10:05
  • java自学教程哪个好2025-03-26 23:10:05
  • java储备单元教程2025-03-26 23:10:05
  • java教程安卓2025-03-26 23:10:05