电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

设计模式-01-设计模式与面向对象

19页
  • 卖家[上传人]:苏****
  • 文档编号:320159652
  • 上传时间:2022-06-30
  • 文档格式:PPT
  • 文档大小:74.50KB
  • / 19 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、设计模式与面向对象设计模式与面向对象面向对象的两个方向性思维面向对象的两个方向性思维l向下,如何深入把握机器底层,从微观理解对象构造底层思维l语言构造l编译转换l对象内存模型l运行时机制l向上,如何将我们的周围世界抽象为程序代码抽象思维l面向对象l组件封装l设计模式l架构模式深入理解面向对象深入理解面向对象l向下:深入理解三大面向对象机制l封装,隐藏内部实现l继承,复用现有代码l多态,改写对象行为l向上:深刻把握面向对象机制所带来的抽象意义,理解如何使用这些机制来表达现实世界,掌握什么是“好的面向对象设计”软件设计固有的复杂性软件设计固有的复杂性l建筑商从来不会去想给一栋已建好的100层高的楼房底下再新修一个小地下室这样做花费极大而且注定要失败。然而令人惊奇的是,软件系统的用户在要求作出类似改变时却不会仔细考虑,而且他们认为这只是需要简单编程的事。lObject-Oriented Analysis and Design with Applications复杂性的几个诱因复杂性的几个诱因l问题领域的复杂性l客户需求本身就很复杂,客户与开发人员互相不理解l管理开发过程的困难l开发是由人完成

      2、的,人的组织、潜能存在巨大复杂性l软件可能的灵活性l软件为开发人员提供了极大的灵活性,而开发人员也很容易滥用这种灵活性l表征离散系统行为的困难l软件系统本质上是一个离散系统,其复杂度要远远大于连续系统。一个简单的外部事件可能破坏整个系统软件设计复杂的根本原因软件设计复杂的根本原因l软件设计复杂性的根本原因在于:变化l客户需求的变化l技术平台的变化l开发团队的变化l市场环境的变化l。如何解决复杂性?l分解l人们面对复杂性有一个常见的做法:即分而治之,将大问题分解为多个小问题,将复杂问题分解为多个简单问题。l抽象l更高层次来讲,人们处理复杂性有一个通用的技术,即抽象。由于不能掌握全部的复杂对象,我们选择忽视它的非本质细节,而去处理泛化和理想化了的对象模型。两种分解与抽象方法l结构化程序设计系统中的每个模块表示某个总体进程中的主要一步。l面向对象程序设计根据问题域中的关键抽象来分解系统。软件设计的目标l什么是好的软件设计?l软件设计的金科玉律:复用!l面向对象设计,为什么?l变化是复用的天敌!l面向对象设计最大的优势在于:抵御变化重新认识面向对象l隔离变化l从宏观层面来看,面向对象的构建方式

      3、更能适应软件的变化,能将变化所带来的影响减为最小l各司其职l从微观层面来看,面向对象的方式更强调各个类的“责任”,新增员工类型不会影响原来员工类型的实现代码这更符合真实的世界,也更能控制变化所影响的范围l对象是什么?l从概念层面讲,对象是某种拥有责任的抽象。l从规格层面讲,对象是一系列可被使用的公共接口。l从语言实现层面来看,对象封装了代码和数据。调整软件模块间耦合关系l耦合关系直接决定着软件面对变化时的行为l模块与模块之间的紧耦合使得软件面对变化时,相关的模块都要随之更改l模块与模块之间的松耦合使得软件面对变化时,一些模块更容易被替换或者更改,但其他模块保持不变面向对象设计准则l针对接口编程,而不是针对实现编程l客户无需知道所使用对象的特定类型,只需要知道对象拥有客户所期望的接口。l优先使用对象组合,而不是类继承l类继承通常为“白箱复用”,对象组合通常为“黑箱复用”l继承在某种程度上破坏了封装性,子类父类耦合度高;l对象组合则只要求被组合的对象具有良好定义的接口,耦合度低。l封装变化点l使用封装来创建对象之间的分界层,让设计者可以在分界层的一侧进行修改,而不会对另一侧产生不良的影响,

      4、从而实现层次间的松耦合。经典面向对象设计原则l依赖倒置原则(DIP)l高层模块(稳定)不应该依赖于低层模块(变化),二者都应该依赖于抽象。l抽象( 稳定) 不应该依赖于实现细节( 变化)l实现细节应该依赖于抽象l开放封闭原则(OCP)l类模块应该是可扩展的,但是不可修改;对扩展开放,对更改封闭经典面向对象设计原则l单一职责原则(SRP)l一个类应该仅有一个引起它变化的原因。lLiskov 替换原则(LSP)l子类必须能够替换它们的基类l接口隔离原则(ISP)l不应该强迫客户程序依赖于它们不用的方法设计模式简介l每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心。lChristopher Alexanderl人是一个经验性的动物l设计模式描述了软件设计过程中某一类常见问题的一般性的解决方案。l软件设计模式是软件领域设计经验的归纳与汇集。GoF 23 种设计模式l历史性著作设计模式:可复用面向对象软件的基础一书中描述了23种经典面向对象设计模式,创立了模式在软件设计中的地位。l由于设计模式一书确定了设计模式的地位,通常所说的设计模式隐含地表示“面向对象设计模式”。

      5、但这并不意味“设计模式”就等于“面向对象设计模式”。面向对象与设计模式l面向对象设计模式解决的是“类与相互通信的对象之间的组织关系,包括它们的角色、职责、协作方式几个方面。l面向对象设计模式是“好的面向对象设计”,所谓“好的面向对象设计”是那些可以满足“应对变化,提高复用”的设计。l面向对象设计模式不像算法技巧,可以照搬照用,它是建立在对“面向对象”纯熟、深入的理解的基础上的经验性认识。掌握面向对象设计模式的前提是首先掌握“面向对象”!恰当使用设计模式l“什么时候、什么地点应用设计模式”比“理解设计模式结构本身”更为重要。设计模式的应用不宜先入为主,一上来就使用设计模式是对设计模式的最大误用。没有一步到位的设计模式。l现代软件设计的特征是需求的频繁变 “化”。如果没有需求变化,便没有面向对象,更没有“面向对象设计模式”。设计模式的要点便是“寻找变化点,然后在变化点处应用设计模式,从而来更好低应对需求的变化”模式分类l从目的来看:l创建型(Creational)模式:将对象的部分创建工作延迟到子类或者其他对象,从而应对需求变化为对象创建时具体类型实现引来的冲击。l结构型(Structural)模式:通过类继承或者对象组合获得更灵活的结构,从而应对需求变化为对象的结构带来的冲击。l行为型(Behavioral)模式:通过类继承或者对象组合来划分类与对象间的职责,从而应对需求变化为多个交互的对象带来的冲击。l从范围来看:l类模式处理类与子类的静态关系。l对象模式处理对象间的动态关系。

      《设计模式-01-设计模式与面向对象》由会员苏****分享,可在线阅读,更多相关《设计模式-01-设计模式与面向对象》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    监控施工 信息化课堂中的合作学习结业作业七年级语文 发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.