Head First Design Patterns - 策略模式

策略模式

策略模式:策略模式是一种行为型模式,它将对象和行为分开,将行为定义为 一个行为接口具体行为的实现。策略模式最大的特点是行为的变化,行为之间可以相互替换。每个if判断都可以理解为就是一个策略。本模式使得算法可独立于使用它的用户而变化

书中的例子

在这里插入图片描述
将鸭子类中经常发生变化的飞行行为喊叫行为单独封装成一个接口,不同鸭子的行为会实现该接口。

不同的鸭子和抽象类鸭子(Duck)是继承 IS A关系
飞行行为和喊叫行为跟鸭子(Duck)是HAS A的关系
具体的飞行行为对行为接口的实现,是实现的关系

策略模式所涉及到的设计原则

  1. 封装变化。识别应用中变化的方面,把它们和不变的方面分开。
  2. 针对接口编程,而不是针对实现编程。
  3. 优先使用组合而不是继承。

策略模式的优缺点

优点

  • 策略模式提供了对“开闭原则”的完美支持,用户可以在不 修改原有系统的基础上选择算法或行为,也可以灵活地增加 新的算法或行为。

  • 策略模式提供了管理相关的算法族的办法。

  • 策略模式提供了可以替换继承关系的办法。

  • 使用策略模式可以避免使用多重条件转移语句。

缺点

  • 客户端必须知道所有的策略类,并自行决定使用哪一个策略类。
  • 策略模式将造成产生很多策略类,可以通过使用享元模式在一 定程度上减少对象的数量。

参考:策略模式

相关推荐

  1. ·策略模式

    2023-12-25 08:48:05       53 阅读
  2. 策略模式

    2023-12-25 08:48:05       42 阅读
  3. 设计模式——策略模式

    2023-12-25 08:48:05       48 阅读
  4. 设计模式-策略模式

    2023-12-25 08:48:05       59 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-25 08:48:05       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-25 08:48:05       106 阅读
  3. 在Django里面运行非项目文件

    2023-12-25 08:48:05       87 阅读
  4. Python语言-面向对象

    2023-12-25 08:48:05       96 阅读

热门阅读

  1. 【美团大数据面试】大数据面试题附答案

    2023-12-25 08:48:05       56 阅读
  2. 中金汇融配资分享在线杠杆炒股的安全知识

    2023-12-25 08:48:05       54 阅读
  3. Neo4j CQL语法

    2023-12-25 08:48:05       61 阅读
  4. 4-Docker命令之docker logs

    2023-12-25 08:48:05       54 阅读
  5. Hive01_安装部署

    2023-12-25 08:48:05       60 阅读
  6. 介绍 TensorFlow 的基本概念和使用场景。

    2023-12-25 08:48:05       62 阅读
  7. uniapp三元表达式判断状态更改字体颜色?

    2023-12-25 08:48:05       47 阅读
  8. RISC-V搭建嵌入式QT开发环境

    2023-12-25 08:48:05       45 阅读