行为型模式-策略模式(Strategy)

概述

​  当要从同一需求的不同策略实现中选一个策略来执行时,往往需要多重选择。

  策略模式将算法的责任和算法的解耦,通过把策略实现封装在策略接口的不同实现类中,在需要某种策略时传入具体的策略实现,避免了多重选择。

  在需要新的策略时传入策略对象,而不是在一大段代码中做多重选择。

结构

​   抽象策略类: 通常由接口或抽象类实现,给出所有具体策略类所需方法。(定义策略职责)

​   具体策略类: 根据不同策略给出不同的抽象策略类实现方案。(实现不同策略)

​   策略引用类: 根据持有的不同策略对象对外提供不同的策略实现方案。(使用策略)

实现

  让具体策略类实现抽象策略类,给策略引用类传入不同的具体策略类,使用不同测策略。

在这里插入图片描述

优缺点

  优点:

    避免使用多重条件选择语句(if else),充分体现面向对象设计思想。

    策略类之间可以自由切换。

    易于扩展。

  缺点:

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

适用场景

  一个系统需要动态地在几种算法中选择一种时,可将每个算法封装到策略类中。

  一个类定义了多种行为,并且这些行为在这个类的操作中以多个条件语句的形式出现,可将每个条件分支移入它们各自的策略类中以代替这些条件语句。

  系统中各算法彼此完全独立,且要求对客户隐藏具体算法的实现细节时。

  多个类只区别在表现行为不同,可以使用策略模式,在运行时动态选择具体要执行的行为。

策略模式举例

  Comparator 中的策略模式。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值