- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
5.3 常用设计模式 ●策略模式 策略模式定义了算法族(比较规则),分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。 (摘录自:《HeadFirst设计模式》) 5.3 常用设计模式 ●状态模式 问题提出:MP3播放器,能在播放、暂停、停止之间切换。详细要求: -播放状态下可响应暂停、停止操作 -暂停状态下课响应播放、停止操作 -停止状态下只能响应播放操作 补充说明,提供以下函数: void Play() : 停止到播放时调用 void Pause() : 播放到暂停时调用 void Resume():暂停到播放时调用 void Stop():播放或暂停 到 停止时调用 键盘上输入1,代表按下播放键;键盘上输入2,代表按下暂停键;键盘上输入3,代表按下停止键。 5.3 常用设计模式 问题分析:这是一个非常典型的有限状态机(Finite State Machine, FSM),通过状态图来描述一下问题: Stop Play Pause PlayKey / Play() StopKey / Stop() PauseKey / Pause() PauseKey or PlayKey / Resume() StopKey / Stop() 5.3 常用设计模式 常见做法:通过嵌套switch-case来实现 5.3 常用设计模式 优点 -代码逻辑简单,易理解 -对于简单的状态机,可采用嵌套switch-case结构 缺点 -对于有多个状态、多个事件的状态机,代码冗长,解读和维护将变得异常困难。 -状态机逻辑和实现动作的代码没有很好地分离。 5.3 常用设计模式 解决方案:通过查表代替嵌套switch-case结构: typedef enum tagState_t { STS_PLAY, STS_PAUSE, STS_STOP, STS_MAX }State_t; typedef struct tagPlayMgr_t{ State_t NextSts; void (*Action)(void); }PlayMgr_t; PlayMgr_t MyMgrTbl[]={{STS_PLAY,play},{STS_PAUSE,pause},{STS_STOP,stop},{STS_MAX,NULL}}; 谢谢! * 设计模式要遵循设计原则,设计原则本身也是成熟的设计模式。 设计模式像极了咱们老祖宗传下来的中国功夫,可能就是简单的二十四式,只要招式烂熟与胸,实战时,一切都会自然流露,不会特意去想用哪一招。而是完全根据场景,对手、目标而自然的出招。如果说你的代码中没有用到模式,那可能实战就是泼妇打架,一通乱拳了,高手当然不会如此。学习模式的一个捷径是看一些经典成熟的代码。 设计模式要遵循设计原则,设计原则本身也是成熟的设计模式。 * 这是通常做法 * 分析:每个函数的处理流程相同,只是处理的数据和执行的动作不同罢了。 能否将处理流程独立出来,让处理的数据和执行的动作以参数的形式传递给函数呢? * * 不好的做法 * Entities:实体;实际存在物;本质 解决方案:当软件需要变化时,尽量通过扩展软件实体的行为来实现变化,而不是通过修改已有的代码来实现变化。 * Parser:分析器 * * 输入命令时,同时确定argv[i] * * * * * * 第五章 设计模式 目标: 本章旨在向学员介绍: 5.1 什么是设计模式 5.2 常用设计原则 5.3 常用设计模式 时间:4学时 教学方法:讲授PPT+ 案例分析 软件之美在于它的功能,在于它的内部结构,还在于团队创建它的过程。对用户来说,通过直观、简单的界面呈现出恰当特性的程序就是美的。对软件设计者来说,被简单、直观地分割,并具有最小内部耦合的内部结构就是美的。对开发人员和管理者来说,每周都会取得重大进展,并且生产出无缺陷代码的具有活力的团队就是美的。美存在于所有这些层次之中 。 最好的软件开发人员都知道一个秘密:美的东西比丑的东西创建起来更廉价,也更快捷。构建、维护一个美的软件系统所花费的时间、金钱都要少于丑的系统。软件开发新手往往不理解这点。他们认为做每件事情都必须要快,他们认为美是不实用的。错!由于事情做得过快,他们造成的混乱致使软件僵化,难以理解。美的系统是灵活、易于理解的,构建、维护它们就是一种快乐。丑陋的系统才是不实用的。丑陋会降低你的开发速度,使你的软件昂贵而又脆弱。构建、维护美的系统所花费的代价最少,交付起来也最快。
您可能关注的文档
- 地产销售职业操盘手册开发商分析.doc
- 地产壹线及时沟通祝为君公司内部培训—写出好文案的三步分析.ppt
- 地产置业项目分析.doc
- 第期文字部分分析.doc
- 第三部分安全操作规程分析.doc
- 第三部分高层建筑工程施工的组织与管理分析.ppt
- 第三部分光缆线路的建设程序与施工备分析.ppt
- 第三部分矿山救护分析.ppt
- 地大C语言课程设计报告——物资管理系统分析.doc
- 第三部分煤与瓦斯突出事故处理分析.ppt
- 2025重庆万盛经开区党工委政法委公益岗招聘备考题库含答案详解(能力提升).docx
- 2025-2026学年初中数学六年级上册(2024)沪教版(五四制)(2024)教学设计合集.docx
- 2025年工程项目安全管理手段方法.docx
- 2025重庆万盛经开区党工委政法委公益岗招聘备考题库附答案详解.docx
- 2025至2030中国无纺玻璃纤维布行业市场占有率及有效策略与实施路径评估报告.docx
- 2025重庆万盛经开区党工委政法委公益岗招聘备考题库附答案详解(夺分金卷).docx
- 成都市郫都区2025年网格员考试练习题(附答案).docx
- 成都市汽车客运站服务规范.docx
- 2025-2026学年初中数学六年级上册(2024)鲁教版(五四制)(2024)教学设计合集.docx
- 成都市双流区2025年网格员笔试真题及答案解析.docx
原创力文档


文档评论(0)