已阅读5页,还剩34页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
计算机学院软件工程系 设计模式 重庆理工大学 授课 张金荣Email zhjr2000 zhjr QQ zhjr 即1211460305 电话设计模式 重庆理工软件工程系 莫勇腾 深入浅出设计模式 C Java版 本书是一本通俗易懂的设计模式入门指导图书 作者用C 和Java两种语言 借助现实生活范例和图片演示 全面阐释GRASP及GoF23种设计模式的概念及其编程应用 帮助你领悟设计模式的思想及精华 并将其融会贯通 灵活应用到自己的开发过程中 全书用两章篇幅对设计模式和GRASP作了基本介绍 用三章的篇幅全面展开对23种设计模式的讲解 对于每一种模式 先给出定义 接着通过类比方式用一个现实世界中的例子说明模式的应用 然后分别以C 和Java代码例述模式的架构实现 最后一章给出了两个设计模式综合案例 为读者实践设计模式提供了很好的学习环境 附录部分精心安排了自测题及答案 供读者练习并检验学习效果 本书适合程序开发人员阅读 尤其适合作为大学计算机专业高年级学生和研究生的教学参考书 设计模式 重庆理工软件工程系 负责任地设计对象 2 GoF 行为型设计模式 5 设计模式 重庆理工软件工程系 设计模式 重庆理工软件工程系 经典的23种模式总浏览 设计模式 重庆理工软件工程系 这本书是设计模式的开创性著作 DesignPatterns ElementsofReusableObject OrientedSoftware 作者E GammaR Helm R JohnsonJ Vlissides四位作者通常被称为四人帮 GangofFour 或GoF 带有戏虐成分 设计模式 重庆理工软件工程系 通过课程学习 掌握面向对象思维方法 了解面向对象技术所涉及的各个领域 加强如何专业化地进行面向对象设计 进一步利用工具进行UML建模 学习面向对象程序设计中常用的一些设计模式 DesignPatterns 优化程序设计方法和框架 设计结构良好的程序 对实际案例进行讨论 实习 提高解决实际问题的能力 教学目标 设计模式 重庆理工软件工程系 考核方式 拟 考勤20分平时成绩20分考试 闭卷 60分 设计模式 重庆理工软件工程系 基本概念 1 1什么是设计模式1 2设计模式的作用1 3GRASP模式的分类1 4GoF设计模式的分类1 5模式的学习阶段 第1章 设计模式 重庆理工软件工程系 1 1什么是设计模式 从一个例子开始 设计模式 重庆理工软件工程系 从一个例子开始 设计模式 重庆理工软件工程系 从一个例子开始 这么做可以吗 设计模式 重庆理工软件工程系 从一个例子开始 怎么办 设计模式 重庆理工软件工程系 从一个例子开始 诱饵鸭 设计模式 重庆理工软件工程系 从一个例子开始 设计模式 重庆理工软件工程系 从一个例子开始 设计模式 重庆理工软件工程系 从一个例子开始 最终基类 设计模式 重庆理工软件工程系 从一个例子开始 最终实现类 设计模式 重庆理工软件工程系 设计模式 重庆理工软件工程系 设计模式 重庆理工软件工程系 设计模式 重庆理工软件工程系 实现具体鸭子类 设计模式 重庆理工软件工程系 测试代码 设计模式 重庆理工软件工程系 从一个例子开始 在鸭子的最终实现类中 那怎么办 设计模式 重庆理工软件工程系 1 1什么是设计模式 定义 设计模式描述了软件设计过程中某一类常见问题的一般性的解决方案 因此 简单地说 我们在发现问题到解决问题这个过程中 常会发现很多问题是重复出现的 或是某个问题的变体 外在不同 而本质相同 这些问题的本质就是软件的设计模式 每一种设计模式都有其解决的特定问题 需求的变化 导致我们用到的解决该问题的模式随之改变 设计模式 重庆理工软件工程系 我们处理大量问题时 在很多不同的问题中重复出现的一种性质 它使得我们可以使用一种方法来描述问题实质并用本质上相同 但细节永不会重复的方法去解决 这种性质就叫模式 程序设计是思维具体化的一种方式 是思考如何解决问题的过程 设计模式是在解决问题的过程中 一些良好思路的经验集成 设计模式 重庆理工软件工程系 1 2设计模式的作用 为什么要学习设计模式原因有很多 一些非常明显 而另一些则不那么明显 学习模式最常见的理由是因为我们可以借其 复用解决方案 通过复用已经公认的设计 我能够在解决问题时取得先发优势 而且避免重蹈前人覆辙 我可以从学习他人的经验中获益 用不着为那些总是会重复出现的问题再次设计解决方案了 确立通用术语 开发中的交流和协作都需要共同的词汇基础和对问题的共识 设计模式在项目的分析和设计阶段提供了共同的基准点 模式还为我们提供了观察问题 设计过程和面向对象的更高层次的视角 这将使我们从 过早处理细节 的桎梏中解放出来 易重构 设计模式 重庆理工软件工程系 1 3GRASP模式的分类 2 1InformationExpert 信息专家 2 2Creator 创造者 2 3LowCoupling 低耦合 2 4HighCohesion 高内聚 2 5Controller 控制器 2 6Polymorphism 多态 2 7PureFabrication 纯虚构 2 8Indirection 间接 2 9ProtectedVariations 受保护变化 设计模式 重庆理工软件工程系 1 4GoF设计模式的分类 关于 DesignPattern 对已有模式的整理 分类一套描述模式的词汇 可用于交流和文档化为软件设计总结了宝贵的经验 这些设计经验可以被重用 但不是简单的代码重用分类 CreationalPatternsStructuralPatternsBehavioralPatterns在软件设计模式领域 起到先驱的作用 设计模式 重庆理工软件工程系 什么是创立性模式 Creational模式 物件的产生需要消耗系统资源 所以如何有效率的产生 管理与操作物件 一直都是值得讨论的课题 Creational模式即与物件的建立相关 在这个分类下的模式给出了一些指导原则及设计的方向 SimpleFactory模式AbstractFactory模式Builder模式FactoryMethod模式Prototype模式Singleton模式RegistryofSingleton模式 设计模式 重庆理工软件工程系 什么是创立性模式 Creational模式 创立性模式 CreationalPatterns 是类在实例化时使用的模式 当一些系统在创立对象时 需要动态地决定怎样创立对象 创立哪些对象创立性模式告诉我们怎样构造和包装这些动态的决定 设计模式 重庆理工软件工程系 什么是结构性模式 Structural模式 如何设计物件之间的静态结构 如何完成物件之间的继承 实现与依赖关系 这关乎着系统设计出来是否健壮 robust 像是易懂 易维护 易修改 耦合度低等等议题 Structural模式正如其名 其分类下的模式给出了在不同场合下所适用的各种物件关系结构 DefaultAdapter模式Adapter模式 ObjectAdapterAdapter模式 ClassAdapterBridge模式Composite模式Decorator模式Facade模式Flyweight模式Proxy模式 一 Proxy模式 二 设计模式 重庆理工软件工程系 什么是结构性模式 Structural模式 结构性模式描述类和对象怎样结合在一起成为较大的结构 结构性模式描述两种不同的东西 类与类的实例 设计模式 重庆理工软件工程系 什么是行为设计模式 Behavioral模式 物件之间的合作行为构成了程式最终的行为 物件之间若有设计良好的行为互动 不仅使得程式执行时更有效率 更可以让物件的职责更为清晰 整个程式的动态结构 像是物件调度 更有弹性 ChainofResponsibility模式Command模式Interpreter模式Iterator模式Mediator模式Memento模式Observer模式State模式Strategy模式TemplateMethod模式Visitor模式 设计模式 重庆理工软件工程系 什么是行为设计模式 Behavioral模式 行为模式设计到算法和对象职责间的分配 行为模式不仅是关于类和对象的 而且还描述它们之间的作用 这些模式刻画了运行时刻难以跟踪的复杂的控制流 它帮助软件设计者在设计软件的时候把注意力从控制流转移到对象间的联系上 设计模式 重庆理工软件工程系 1 5模式的学习阶段 怎样学好设计模式 设计模式是面向对象编程的热门话题之一 越来越多的开发人员认识到设计模式的重要性 采用各种语言实现设计模式的文章也越来越多 但是很多开发人员发现很难将设计模式与实际开发中需要解决的具体问题相联系 因为使用设计模式的难点往往不在于模式的实现 而在于很难确定哪种模式可以在现实的应用场景中采用 从而导致了在现实的项目中 面对客户的压力 我们总是采用最直截了当的方法解决问题 来不及多考虑这些方法的优劣 即使明知将带来更大的麻烦也必须如此 有些时候因为选择了不恰当的设计模式 使原本简单的问题变得复杂化 总是有些优秀的设计人员可以在同样短的时间内做出正确对待的判断 他们同样是依靠本能和直觉 只是这种本能是在日常编程开发中一点一滴积累起来的 如同一个剑客在危机时刻的一击 并不是一时的灵光乍现 而是平时刻苦修炼的结果 俗话说 紧靠背棋谱成不了围棋高手 只在概念上理解设计模式而不实现 同样成不了架构设计师 在软件设计时 要有意识地问自己使用还是不使用设计模式 不要匆忙下结论 重视软件质量的改进 如果有可能 则在项目后期重构代码 同时注意学习同行的经验 很多开放源码项目是值得学习的 设计模式 重庆理工软件工程系 编程语言与设计模式的实现 尽管设计模式本身并不要求一定用某种语言来实现 但脱离了具体的实现 就无法真正理解设计模式 GOF的 设计模式 是经典之作 但毕竟距现在已经十几年了 这个期间开发平台已经进化了多代 很多新技术已经应用到编程中 有些技术可以简化设计模式的实现 有些技术已经采用了设计模式 因此 学习设计模式必须针对所使用的编程语言和开发平台 一定要注意 不是将 设计模式 中的例子转换为C 或者其他语言就等于知道如何实现设计模式了 而是要关注设计模式的精髓 并结合具体的语言特点完成其实现 就 NET而言 很多技术可以简化设计模式的实现 例如采用反射技术实现工厂和采用委托技术实现模板方法等 设计模式 重庆理工软件工程系 设计模式的原则 设计模式的基础是面向对象 离开面向对象也无从谈论设计模式 所以 学习设计模式 首先要理解的是面向对象的三大机制 即 封闭 继承 多态 也只有理解这些了 才能去更好的理解设计模式的精髓 当然 反过来 理解了设计模式 就能更好的运用面向对象原理 设计模式也有其一定的设计原则可遵循 1 单一职责原则 我们要把功能尽可能的细分 每一个类应该只负责一块内容或只执行一个任务
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 急诊医学科烧伤创面护理规范
- 乳糜液培训讲学
- 《奈特神经科学彩色图谱》阅读札记
- 2025科研技术合作合同范本
- 2025冷冻保鲜柜冷冻保鲜库定制合同
- 资料管理述职报告
- 2025购房定金合同样本
- 《2025电子科技有限公司技术合作合同》
- 外科骨折创伤处理流程
- 伊利微生物知识培训
- 2025广东广州生态环境监测中心站招聘编外人员4人考试笔试备考试题及答案解析
- 2025年九年级上学期语文期中质量检测试卷+答案
- 2023年甘肃省白银市笔试辅警协警真题(含答案)
- 检验科规章制度和操作规范
- 慢性阻塞性肺病预防护理关键探讨
- 加油站岗位安全生产责任制
- 消防知识答题竞赛题库及答案
- 边坡作业安全培训内容课件
- 三方融资协议合同范本
- 经皮迷走神经电刺激:机制原理与临床应用
- 海关检疫职业知识培训课件
评论
0/150
提交评论