java设计模式之策略模式(Strategy模式)

[b]java设计模式之策略模式(Strategy模式)[/b]
(2011-07-31 20:24:52)转载标签: 赵云吴国算法策略类锦囊妙计杂谈 分类: JAVA基础
策略模式是对算法的包装,是把使用算法的责任和算法本身分割开来,委派给不同的对象管理。策略模式通常把一个系列的算法包装到一系列的策略类里面,作为一个抽象策略类的子类。

一句话形容就是:准备一组算法,并将每一个算法封装起来,似的他们可以互换。策略模式似的算法可以独立于使用他的客户而变化。

使用场景:

许多相关的类仅仅是行为有异。“策略”提供了一种多个行为中的一个行为来配置一个类的方法。

需要使用一个算法的不同变体。例如,你可能会定义一些反应不同的空间/时间权衡的算法。当这些变体实现为一个算法的类层时,可以使用策略模式。

算法是用户不应该知道的数据。可使用策略模式以避免暴露复杂的、与算法相关的数据结构。

一个类定义了多种行为,并且这些行为在这个类的操作中以多个条件语句的形式出现。将相关的条件分支一如他们各自的Strategy类中以代替这些条件语句。

结构:

策略模式设计到的三个角色:

环境角色:持有一个Strategy类(策略类)的引用

抽象策略角色:策略类,通常由一个借口或者抽象类实现

具体策略角色:包装了相关的算法和行为

通俗例子:

三国演义中,赵云保护刘备去吴国迎娶美女,诸葛亮给赵云三条锦囊妙计:走乔国老的后门,求孙国太放任,请孙夫人退兵。

赵云-->按计行事

环境角色:赵云-->由他来决定选择策略

抽象策略角色:(接口)锦囊妙计-->按计行事(抽象方法)

具体策略角色:三条妙计(单独使用的)



策略模式优点:

提供了管理相关算法的办法

提供了可以替换继承关系的办法

避免使用多重条件转移语句

缺点:

客户端必须知道所有的策略类,并自行决定使用哪一个策略类

造成很多的策略类
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值