美文网首页
Context在策略模式中的作用

Context在策略模式中的作用

作者: 神之试炼者 | 来源:发表于2019-09-28 18:24 被阅读0次

背景:
刚开始学习策略模式的时候, 不知道context有什么作用, 觉得不用context, 直接在客户端用IStrategy也可以了.
然后搜了一些资料

参考博客:
https://softwareengineering.stackexchange.com/questions/187378/context-class-in-strategy-pattern
https://stackoverflow.com/questions/12545305/why-we-need-context-class-in-strategy-design-pattern
https://www.javagists.com/strategy-design-pattern

我的理解

策略模式中有四个对象: 客户端(client), 策略上下文(context), 策略接口(IStrategy),以及多个具体策略实现(StrategyImpl)

作用1: 让客户端和具体策略完全解耦

在没有context的情况下, client直接持有策略接口, 如果具体策略改变, 需要更改client的代码, 但是如果让context持有IStrategy
那就不需要更改client

作用2: 策略"上下文"

我觉得client在整个处理流程中只要知道他调了一个策略就行了, 不必要知道具体策略是什么, 甚至策略的选择都让策略上下文去维护

比如看到很多策略模式的实现, 都是在context中维护了strategy list, 然后在里面通过参数去选取对应的策略, 这块"选取对应策略"放在context中比放在client中更合适
所谓: "封装变化", "对修改关闭,对扩展开放"

如果理解有误, 欢迎指正

相关文章

  • Context在策略模式中的作用

    背景:刚开始学习策略模式的时候, 不知道context有什么作用, 觉得不用context, 直接在客户端用ISt...

  • 设计模式之策略模式

    策略模式 定义:在策略模式中,我们创建 各种策略对象,和一个行为随着 策略对象的改变而改变context对象。策略...

  • 策略模式 2018-11-04

    设计模式之策略模式 官方说明设计模式的3个角色: 环境角色:context , 持有一个策略的引用 抽象策略角色,...

  • 策略模式 示例

    策略模式 创建一个接口 创建实现接口的实体类。 创建 Context 类 使用 Context 来查看当它改变策略...

  • 设计模式:(四)行为型模式

    一、策略模式 策略模式使用的就是面向对象的继承和多态机制,非常容易理解和掌握,策略模式的三个角色: Context...

  • 11.7设计模式-策略模式-详解

    设计模式-策略模式 策略模式详解 策略模式在android中的实际运用 1.策略模式详解 2.策略模式在andro...

  • Javascript 运行上下文和作用域链

    一、作用域Scope和上下文Context 在javascript中,作用域scope和上下文context是两个...

  • Node.js 设计模式笔记 —— State 模式

    State 模式是一种特殊形式的 Strategy 模式:Context 选择的具体策略根据不同的 state 发...

  • 23种设计模式——策略

    策略模式的优点: 策略模式的Strategy类层次为Context定义了一系列的可供重用的算法或行为。继承有助于析...

  • 设计模式(策略模式)

    策略模式的重点不是实现算法,而是如何调用算法。 策略模式主要分三大类:1.环境角色类(context)直接和客户端...

网友评论

      本文标题:Context在策略模式中的作用

      本文链接:https://www.haomeiwen.com/subject/cautpctx.html