java设计模式之策略模式

策略模式

理解: 针对一组算法,我们将不同的算法封装到实现基础的接口的独立实现类中,从而我们可以在不同场景灵活根据不同的实现类去调用不同的算法。

三个角色

  1. Context 环境角色
    持有一个stategy的引用,可以根据这个不同场景的引用调用不同的算法去实现
  2. Strategy 抽象类策略角色
    给出所有的具体策略类所需的接口,其实就是申明我们所要调用的接口
  3. ConcreteStrategy 实现类角色 其实就是实现Strategy 的不同算法

图解:

这里写图片描述

理解

理解1

策略模式主要注重于系统如何组织调用这些实现基础公共的接口的不同算法,从而让代码更加灵活,具有更好的维护性和扩展性 
但是在开发者角度,我们必须要求开发者了解有多少接口,接口是用来干嘛的 ,不同的实现算法是应用于什么场景的。这是使用策略模式所带来的缺点。

理解2

 1. 策略算法是相同行为的不同实现, 
 2. 运行时的唯一性: 不同的运用场景是可以相互切换的 但是在一个场景中我们只能指定一个场景的算法去进行计算,这就是我们的运行时唯一性。
 3. 抽象策略角色必须要用Java抽象类实现,而不能使用接口

理解3

我们举个例子(啊不,栗子太小了,举个桃子吧 我比较喜欢吃) 就我们现在TX的心悦会员,大家应该知道吧。场景是: 你玩游戏被人举报了,此时有ABC三个用户 A是心悦3 B是心悦1 C不是心悦 那么这时候,采用策略模式,A的算法是不理他 甚至还反过来封举报人的号;B的算法是小封十分钟 没其他的了; 而C则是封个三个月甚至一两年。
这样是不是就能理解java的这个策略模式了?

作者写在最后的话

公司刚刚采用策略模式,所有花时间来了解下这个设计模式,发现使用起来好是好但是还是蛮复杂的,配合真正的企业级项目还是挺有技术含量的。
有不足之处 请多多指教。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值