策略模式(组件协作模式)

策略模式(组件协作模式)

策略模式实例代码 + 注解

目的

正常情况下,一个类/对象中会包含其所有可能会使用的内外方法,但是一般情况下,这些常使用的类都是由不同的父类继承、组合得来的,来实现代码的复用,这当然也包括了重复的方法

  • **冗余:**但是如果这些算法、方法放置的位置不好可能会导致不常使用甚至不使用的算法编码到了对象中。
  • 扩展:若是在未来再对该模块扩展、修改时将会直接去触碰类成员,这一点违背了我们的开闭原则

如何正确的将这些父子、兄弟间的不同、相似、相同算法放在好的位置并去独立以达到解耦、去冗余的作用就是策略模式所注意的。

模式定义

定义一系列算法,把它们一个个封装起来,并且使它们可互相替换(变化)。该模式使得算法可独立于使用它的客户程序(稳定)而变化(扩展,子类化)。 ——《设计模式》 GoF

要点总结

  • Strategy及其子类为组件提供了一系列可重用的算法,从而可以使得类型在运行时方便地根据需要在各个算法之间进行切换。
  • Strategy模式提供了用条件判断语句以外的另一种选择,消除条件判断语句,就是在解耦合。含有许多条件判断语句的代码通常都需要Strategy模式。
  • 如果Strategy对象没有实例变量,那么各个上下文可以共享同一个Strategy对象,从而节省对象开销

Eg.

在这里插入图片描述

相关推荐

  1. ·策略模式

    2023-12-25 14:00:02       35 阅读
  2. 策略模式

    2023-12-25 14:00:02       17 阅读
  3. 设计模式——策略模式

    2023-12-25 14:00:02       29 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-25 14:00:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-25 14:00:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-25 14:00:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-25 14:00:02       18 阅读

热门阅读

  1. Transformer 模型设计的灵感

    2023-12-25 14:00:02       33 阅读
  2. 【题解】洛谷 P9183 [USACO23OPEN] FEB B

    2023-12-25 14:00:02       38 阅读
  3. git拉取远程分支到本地

    2023-12-25 14:00:02       36 阅读
  4. 【前端基础】uniapp、axios 获取二进制图片

    2023-12-25 14:00:02       43 阅读
  5. 使用Uniapp随手记录知识点

    2023-12-25 14:00:02       37 阅读
  6. DrmOpenWithType

    2023-12-25 14:00:02       32 阅读
  7. go语言基础 -- 字符串及其常用函数

    2023-12-25 14:00:02       33 阅读
  8. 前端学习笔记

    2023-12-25 14:00:02       39 阅读
  9. sklearn网格搜索找寻最优参数

    2023-12-25 14:00:02       40 阅读