“Head First 设计模式“ :策略模式
发表于:2025-01-28 作者:千家信息网编辑
千家信息网最后更新 2025年01月28日,策略模式问题的描述:需求:开发一个鸭子游戏,能游泳,有外观,实现类图如下:增加的需求:1. 加入飞行功能2. 加入呱呱叫的功能。。。等等,暂时的解决方式如下:上线后出现了些问题:1. 所有的鸭子都能叫
千家信息网最后更新 2025年01月28日“Head First 设计模式“ :策略模式
策略模式
问题的描述:
需求:开发一个鸭子游戏,能游泳,有外观,实现类图如下:
增加的需求:
1. 加入飞行功能
2. 加入呱呱叫的功能。。。等等,暂时的解决方式如下:
上线后出现了些问题:
1. 所有的鸭子都能叫吗?木头鸭子呢?
2. 所有的鸭子都能飞吗?木头鸭子呢?橡皮鸭子呢?
总结下,使用继承的缺点:
代码在多个子类中重复
运行时的行为不容易改变
很难知道鸭子的全部行为
改变会牵一发动全身,造成其他鸭子不想要的改变
。。。
好吧,我们引入接口来进一步修改,类图如下:
问题已经解决了,但是鸭子子类有40多种,我们修改fly方法,难道修改40种样本?以后的维护的坑有点大哦!
总结下,这种方式的缺点:
代码在多个子类中重复
维护成本提高(有40个子鸭子类,要修改fly方法需要改40次?)
。。。
问题不断,我们用设模式来解决这个问题,先看看定义:策略模式:定义算法族,分别封装起来,它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。
好,我们修改下,类图如下:
我们用这个模式解决了:
1. 鸭子行为的各种各样性(子类行为和超类没有直接的关系了,添加删除行为不影响继承体系)
2. 代码重用,维护问题(子类太多时修改行为特别麻烦,代码重复,只修改算算法组就搞定)
3. 动态修改行为(Setter和Getter方法来灵活配置行为)
4. 。。。
这章我们学到的设计原则:
设计原则1: 封装变化(找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起)。
设计原则2: 针对接口编程,而不是针对实现类
设计原则3: 多用组合,少用继承
鸭子
行为
问题
模式
代码
子类
设计
原则
变化
方法
算法
策略
功能
多个
接口
方式
木头
缺点
需求
封装
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
plus连接不上本地数据库
ORL_92x112人脸数据库
seqserver数据库备份
linux服务器的管理权限
跑跑手游国际服登录服务器超时
数据库中如何存储图片
武汉萌派疯网络技术有限公司招聘
上海阅人网络技术有限公司
xx区妇联网络安全自查报告
中兴云服务器和浪潮云服务器
资源配方师数据库怎么输入负值
迷你世界游戏怎么开服务器
软件开发会用到的图
网络安全法应急预案解读
网络安全 判刑
电脑服务器草稿箱在哪里
高邮软件开发有限公司
sql服务器远程访问
怎么只复制汇总数据库
软件开发比较好的公司有哪些
手机服务器地址怎么填
岳阳系统软件开发公司
提词器app软件开发
崂山区微信公众号软件开发系统
神域林地服务器
抖音流量池与数据库
特斯拉数据库放在中国吗
网络安全调查报告和分析
数据库误操作
我的世界服务器公网ip怎么弄