参考书《Head First 设计模式》

本文基于假设:只有我自己看。为了防止误公开,特此声明,本文内容未必有用【doge】

该书案例采用Java,但是自己是C++爱好者,不过侯捷老师讲课时会顺其自然的引入设计模式,所以理解起来并不难。

由于是23个模式,所以采用字母索引
A 策略模式

该例子是一群小鸭子,这群小鸭子吧,有的会飞!,有的会叫,有的会像火箭一样发射,有的啥也不会。
于是,就出现了一个问题,我们设计的鸭子类需要能够动态调整它具有哪些功能,接下来就是版本的迭代:
  • 首先是一个简单的类,把所有方法都写进父类里,子类继承时再考虑实现。但是这样新增加功能就,牵一发而动全身,父类一变,子类全部遭殃。
    此时根据第一条设计原则 : 将易变的部分与不变的部分拆分开来
  • 于是考虑鸭子们共同的特征与不同的行为,将行为单独拆出来,按照行为的种类设计成不同的类,比如会不会飞,怎么飞,算一个类,然后怎么叫,是另一个类。
    第二条设计原则:针对接口编程,而不是针对实现编程
  • 最后整理小鸭子和他们的行为,采用委托delegate(composition by reference),也就是通过组合,委托行为类去实现行为。
    第三原则:多用组合,少用继承
  • 最后的方案优点是行为已经完全独立于鸭子了,可以自由复用了,并且可以动态的修改委托,实现不同的行为转换,妙。

小记:侯捷老师真的是大师,庖丁解牛,在短短几个小时的课程中就学会了好多东西,而且顺其自然,设计模式看起来就是对组合和继承乃至更基本的语法的妙用,大师的经验就在那里,能理解吸收多少全看自己的造化。


最后是策略模式高大上的定义
策略模式定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。

23种设计模式之策略模式——小鸭子的故事相关推荐

  1. 在王者荣耀角度下分析面向对象程序设计B中23种设计模式之策略模式

    · 策略模式在王者荣耀中的应用 · 应用一:[登录游戏前]选择通过何种方式登录游戏 应用二:[游戏开始前]选择英雄及其召唤师技能 应用三:[游戏开始后]选择使用普攻还是技能 一.简述 登录游戏前,玩家 ...

  2. 23种设计模式之策略模式

    策略模式的定义 定义: 定义一组算法, 将每个算法都封装起来, 并且使它们之间可以互换 通俗的说, 就是对一个接口下的一组算法进行封装 其类图如下: 其中三个角色说明: Strategy 抽象策略角色 ...

  3. java 23 种设计模式-23-java 策略模式(Strategy Pattern)

    目录 目录 策略模式 实际案例 定义 测试 实现方式 UML & Code UML Code 系列导航 策略模式 在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运 ...

  4. 23种设计模式之命令模式和策略模式的区别

    文章目录 概述 命令模式 策略模式 相同点 总结 概述 命令模式和策略模式确实很相似,只是命令模式多了一个接收者(Receiver)角色.它们虽然同为行为类模式,但是两者的区别还是很明显的.策略模式的 ...

  5. 23种设计模式7_代理模式之一静态代理

    23种设计模式7_代理模式之一静态代理 1 基本介绍 代理模式:为其他对象提供一种代理以控制对这个对象的访问 代理模式也叫委托模式,它是一项基本设计技巧.许多其他的模式,如状态模式.策略模式.访问者模 ...

  6. 23种设计模式——装饰者模式

    文章目录 23种设计模式--装饰者模式 1.装饰者模式概述 2.装饰者模式的结构 3.装饰者模式的实现 4.装饰者模式的应用场景 23种设计模式--装饰者模式 1.装饰者模式概述 背景 有些人为了早上 ...

  7. 实践GoF的23种设计模式:建造者模式

    本文分享自华为云社区<[Go实现]实践GoF的23种设计模式:建造者模式>,作者: 元闰子. 简述 在程序设计中,我们会经常遇到一些复杂的对象,其中有很多成员属性,甚至嵌套着多个复杂的对象 ...

  8. 【Go实现】实践GoF的23种设计模式:命令模式

    上一篇:[Go实现]实践GoF的23种设计模式:代理模式 简单的分布式应用系统(示例代码工程):https://github.com/ruanrunxue/Practice-Design-Patter ...

  9. 挑战30秒记住23种设计模式,顺口溜【一个连贯的故事】

    二十三种设计模式图 ​​​​​​​ 23种设计模式 创建型模式,共五种:工厂方法模式.抽象工厂模式.单例模式.建造者模式.原型模式.结构型模式,共七种:适配器模式.装饰器模式.代理模式.外观模式.桥接 ...

  10. 23种设计模式之代理模式

    文章目录 代理模式的定义与特点 代理模式的结构与实现 模式的结构 模式的实现 代理模式的应用场景 代理模式的应用实例 代理模式的扩展 代理模式分类 静态代理 动态代理 在有些情况下,一个客户不能或者不 ...

最新文章

  1. C语言网络编程:accept函数详解
  2. 探讨ASP.NET 2.0中的Web控件改进技术(3)
  3. C 中 main 函数的参数
  4. go 语言系列 (四)位操作用法
  5. 关于Exchange邮箱服务器角色故障排查及解决思路分享
  6. To shade or not to shade
  7. set python3_python3学习之set集合
  8. SpringBoot配置多数据源(动态切换)
  9. 学习笔记(16):GIS遥感科技论文写作技巧与方法初探-地理探测器
  10. VGG16和VGG19网络结构图
  11. Ubuntu环境下下载Android-SDK-Linux之后使用adb连接设备报错
  12. VBA调用sqlserver带参数的存储过程
  13. XML中输入特殊符号
  14. 【初探篇】Nginx 虚拟主机与域名解析
  15. 虚拟机下的SYN Flood测试
  16. 苹果屏幕上的小圆点_原来苹果手机内置录屏功能,简单设置就打开,好多人没发现!...
  17. 2019 年第 25 周 DApp 影响力排行榜 | TokenInsight
  18. 朝花夕拾 - jsliang 大白前端新年庆
  19. 查询课程数mysql_mysql_数据查询练习
  20. CUDA----.cpp文件和.cu文件应用区别

热门文章

  1. 电脑键盘注册表已损坏导致无法输入信息的修复方式
  2. C# for循环99乘法表
  3. 荣耀9igoogle模式_将iGoogle设为Microsoft Outlook中的启动页
  4. JS仿iGoogle自定义首页模块拖拽效…
  5. 迅雷高速下载百度云盘文件
  6. uniapp更改switch大小
  7. 十进制和二进制转换原理
  8. LM75温度传感器数据采集实验
  9. 用cisco服务器添加html,在接入服务器上配置基本 AAA
  10. 某传销app的用户信息泄露