《设计模式解析》摘录(6)

Strategy 模式

    定义一系列的算法,把它们一个个封装起来,并且使它们可互相替换。Strategy 模式使算法可独立于使用它的客户而变化。

    基础原则:

    1、对象都具有职责;

    2、这些职责不同的具体实现是通过多态的使用完成的;

    3、概念上相同的算法具有多个不同的实现,需要进行管理。

    将问题域中的各个行为互相分离开来——也就是说将它们解耦,是一个好的设计实践。这使我们可以修改负责某一行为的类,不会对其他类产生不良影响。

关键特征:

    意图:可以根据所处上下文,使用不同的业务规则或算法。

    问题:对所需算法的选择取抉于发出请求的客户或者要处理的数据。如果只有一些不会变化的算法,就不需要 Strategy 模式。

    解决方案:将对算法的选择和算法的实现相分离,允许根据上下文进行选择。

    参与者于协作者:

    1、Strategy 指定了如何用不同的算法;

    2、各 ConcreteStrategy 实现了这些不同的算法;

    3、Context 通过类型为 Strategy 的引用使用具体的 ConcreteStrategy。 Strategy 与 Context 相互作用以实现所选的算法(有时候 Strategy 必须查询 Context)。Context 将来自 Client 的请求转发给 Strategy。

    实现:让使用算法的类(Context)包含一个抽象类(Strategy),该抽象类有一个抽象方法指定如何调用算法。每个派生类按需要实现算法。

    注意:在原型 Strategy 模式中,选择所用具体实现的职责由 Client 对象承担,并转给 Strategy 模式的 Context对象。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值