




已阅读5页,还剩42页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第1章 设计模式概述 1 学习设计模式前的相关知识回顾继承封装多态 2 继承的概述 多个类中存在相同属性和行为时 将这些内容抽取到单独一个类中 那么多个类无需再定义这些属性和行为 只要继承那个类即可 多个类可以称为子类 单独这个类称为父类或者超类 子类可以直接访问父类中的非私有的属性和行为 通过extends关键字让类与类之间产生继承关系 classSubDemoextendsDemo 继承的出现提高了代码的复用性 继承的出现让类与类之间产生了关系 提供了多态的前提 3 继承的特点 Java只支持单继承 不支持多继承 一个类只能有一个父类 不可以有多个父类 classSubDemoextendsDemo okclassSubDemoextendsDemo1 Demo2 errorJava支持多层继承 继承体系 classA classBextendsA classCextendsB 定义继承需要注意 不要仅为了获取其他类中某个功能而去继承类与类之间要有所属 isa 关系 xx1是xx2的一种 4 super关键字 super和this的用法相像this代表本类对象的引用super代表父类的内存空间的标识 当子父类出现同名成员时 可以用super进行区分子类要调用父类构造函数时 可以使用super语句 5 函数覆盖 Override 子类中出现与父类一模一样的方法时 会出现覆盖操作 也称为重写或者复写 父类中的私有方法不可以被覆盖 在子类覆盖方法中 继续使用被覆盖的方法可以通过super 函数名获取 覆盖注意事项 覆盖时 子类方法权限一定要大于等于父类方法权限静态只能覆盖静态 覆盖的应用 当子类需要父类的功能 而功能主体子类有自己特有内容时 可以复写父类中的方法 这样 既沿袭了父类的功能 又定义了子类特有的内容 6 子类的实例化过程 子类中所有的构造函数默认都会访问父类中空参数的构造函数因为每一个构造函数的第一行都有一条默认的语句super 子类会具备父类中的数据 所以要先明确父类是如何对这些数据初始化的 当父类中没有空参数的构造函数时 子类的构造函数必须通过this或者super语句指定要访问的构造函数 7 final关键字 final可以修饰类 方法 变量 final修饰的类不可以被继承 final修饰的方法不可以被覆盖 final修饰的变量是一个常量 只能被赋值一次 8 抽象类 1抽象类概述2抽象类的特点3抽象类举例代码讲解4抽象类相关问题 9 抽象类概述 抽象定义 抽象就是从多个事物中将共性的 本质的内容抽取出来 例如 狼和狗共性都是犬科 犬科就是抽象出来的概念 抽象类 Java中可以定义没有方法体的方法 该方法的具体实现由子类完成 该方法称为抽象方法 包含抽象方法的类就是抽象类 抽象方法的由来 多个对象都具备相同的功能 但是功能具体内容有所不同 那么在抽取过程中 只抽取了功能定义 并未抽取功能主体 那么只有功能声明 没有功能主体的方法称为抽象方法 例如 狼和狗都有吼叫的方法 可是吼叫内容是不一样的 所以抽象出来的犬科虽然有吼叫功能 但是并不明确吼叫的细节 10 抽象类的特点 抽象类和抽象方法必须用abstract关键字来修饰 抽象方法只有方法声明 没有方法体 定义在抽象类中 格式 修饰符abstract返回值类型函数名 参数列表 抽象类不可以被实例化 也就是不可以用new创建对象 原因如下 抽象类是具体事物抽取出来的 本身是不具体的 没有对应的实例 例如 犬科是一个抽象的概念 真正存在的是狼和狗 而且抽象类即使创建了对象 调用抽象方法也没有意义 抽象类通过其子类实例化 而子类需要覆盖掉抽象类中所有的抽象方法后才可以创建对象 否则该子类也是抽象类 11 抽象类举例代码讲解 雇员示例 需求 公司中程序员有姓名 工号 薪水 工作内容 项目经理除了有姓名 工号 薪水 还有奖金 工作内容 对给出需求进行数据建模 12 抽象类相关问题 抽象类中是否有构造函数 抽象关键字abstract不可以和哪些关键字共存 抽象类中可不可以没有抽象方法 抽象类和一般类的区别抽象类一定是一个父类么 13 接口 格式 interface接口名 接口中的成员修饰符是固定的 成员常量 publicstaticfinal成员函数 publicabstract接口中的成员都是public的 接口的出现将 多继承 通过另一种形式体现出来 即 多实现 14 接口的特点 接口是对外暴露的规则 接口是程序的功能扩展 接口的出现降低耦合性 接口可以用来多实现 类与接口之间是实现关系 而且类可以继承一个类的同时实现多个接口 接口与接口之间可以有继承关系 15 接口与抽象类 16 多态 定义 某一类事物的多种存在形态 例 动物中猫 狗 猫这个对象对应的类型是猫类型猫x new猫 同时猫也是动物中的一种 也可以把猫称为动物 动物y new猫 动物是猫和狗具体事物中抽取出来的父类型 父类型引用指向了子类对象 17 多态 程序中体现 父类或者接口的引用指向或者接收自己的子类对象 好处和作用 多态的存在提高了程序的扩展性和后期可维护性前提 需要存在继承或者实现关系要有覆盖操作 18 多态的特点 成员函数 编译时 要查看引用变量所属的类中是否有所调用的成员 在运行时 要查看对象所属的类中是否有所调用的成员 成员变量 只看引用变量所属的类 19 本章教学内容 设计模式的诞生与发展设计模式的定义与分类GoF设计模式简介设计模式的优点设计模式的相关资源 20 设计模式的诞生与发展 模式的诞生与定义模式起源于建筑业而非软件业模式 Pattern 之父 美国加利佛尼亚大学环境结构中心研究所所长ChristopherAlexander博士 APatternLanguage Towns Buildings Construction 253个建筑和城市规划模式模式Context 模式可适用的前提条件 Theme或Problem 在特定条件下要解决的目标问题 Solution 对目标问题求解过程中各种物理关系的记述 21 设计模式的诞生与发展 ChristopherAlexander 22 设计模式的诞生与发展 模式的诞生与定义Alexander给出了关于模式的经典定义 每个模式都描述了一个在我们的环境中不断出现的问题 然后描述了该问题的解决方案的核心 通过这种方式 我们可以无数次地重用那些已有的解决方案 无需再重复相同的工作 模式是在特定环境中解决问题的一种方案 23 设计模式的诞生与发展 软件模式1990年 软件工程界开始关注ChristopherAlexander等在这一住宅 公共建筑与城市规划领域的重大突破 最早将该模式的思想引入软件工程方法学的是1991 1992年以 四人组 GangofFour GoF 分别是ErichGamma RichardHelm RalphJohnson和JohnVlissides 自称的四位著名软件工程学者 他们在1994年归纳发表了23种在软件开发中使用频率较高的设计模式 旨在用模式来统一沟通面向对象方法在分析 设计和实现间的鸿沟 24 设计模式的诞生与发展 GangofFour 25 设计模式的诞生与发展 ErichGamma 苏黎世大学计算机科学博士 是Eclipse JUnit等项目主要技术负责人之一 JohnVlissides 斯坦福大学计算机科学博士 原IBM研究员 于2005年11月24日因脑瘤去世 享年44岁 RalphJohnson 墨尔本大学计算机科学博士 原IBM研究员 现在波士顿顾问集团供职 RichardHelm 康奈尔大学计算机科学博士 伊利诺伊大学教授 GangofFour 26 设计模式的诞生与发展 软件模式软件模式是将模式的一般概念应用于软件开发领域 即软件开发的总体指导思路或参照样板 软件模式并非仅限于设计模式 还包括架构模式和代码模式等 实际上 在软件生存期的每一个阶段都存在着一些被认同的模式 软件模式可以认为是对软件开发这一特定 问题 的 解法 的某种统一表示 它和Alexander所描述的模式定义完全相同 即软件模式等于一定条件下的出现的问题以及解法 软件模式的基础结构由4个部分构成 问题描述 前提条件 环境或约束条件 解法和效果 27 设计模式的诞生与发展 软件模式 28 设计模式的诞生与发展 软件模式软件模式与具体的应用领域无关 在模式发现过程中需要遵循大三律 RuleofThree 即只有经过三个以上不同类型 或不同领域 的系统的校验 一个解决方案才能从候选模式升格为模式 29 设计模式的诞生与发展 设计模式的发展1987年 KentBeck和WardCunningham借鉴Alexander的模式思想在程序开发中开始应用一些模式 在OOPSLA会议上发表了他们的成果 1990年 OOPSLA与ECOOP联合举办 ErichGamma和RichardHelm等人开始讨论有关模式的话题 BruceAnderson主持 四人组 正式成立 并开始着手进行设计模式的分类整理工作 1991年 OOPSLA BruceAnderson主持了首次针对设计模式的研讨会 1992年 OOPSLA Anderson再度主持研讨会 模式已经逐渐成为人们讨论的话题 注 OOPSLA Object OrientedProgramming Systems Languages Applications 面向对象编程 系统 语言和应用大会 编程语言及软件工程国际顶级会议 2010年改为SPLASH Systems Programming LanguagesandApplications SoftwareforHumanity 30 设计模式的诞生与发展 设计模式的发展1993年 KentBeck和GradyBooch赞助了第一次关于设计模式的会议 这个设计模式研究组织发展成为著名的HillsideGroup研究组 1994年 由HillsideGroup发起 在美国伊利诺伊州 Illinois 的AllertonPark召开了第1届关于面向对象模式的世界性会议 名为PLoP PatternLanguagesofPrograms 编程语言模式会议 简称PLoP 94 1995年 PLoP 95仍在伊利诺伊州的AllertonPark举行 四人组 出版了 设计模式 可复用面向对象软件的基础 DesignPatterns ElementsofReusableObject OrientedSoftware 一书 本书成为1995年最抢手的面向对象书籍 也成为设计模式的经典书籍 31 设计模式的诞生与发展 设计模式的发展从1995年至今 设计模式在软件开发中得以广泛应用 在Sun的JavaSE JavaEE平台和Microsoft的 net平台设计中就应用了大量的设计模式 诞生了越来越多的与设计模式相关的书籍和网站 设计模式也作为一门独立的课程或作为软件体系结构等课程的重要组成部分出现在国内外研究生和大学教育的课堂上 32 设计模式的定义与分类 设计模式的定义设计模式 DesignPattern 是一套被反复使用 多数人知晓的 经过分类编目的 代码设计经验的总结 使用设计模式是为了可重用代码 让代码更容易被他人理解 保证代码可靠性 33 设计模式的定义与分类 设计模式的基本要素设计模式一般有如下几个基本要素 模式名称 问题 目的 解决方案 效果 实例代码和相关设计模式 其中的关键元素包括以下四个方面 模式名称 Patternname 问题 Problem 解决方案 Solution 效果 Consequences 34 设计模式的定义与分类 设计模式学习步骤本课程将按照以下次序来学习设计模式 模式动机与定义模式结构与分析模式实例与解析模式效果与应用模式扩展 35 设计模式的定义与分类 设计模式的分类根据其目的 模式是用来做什么的 可分为创建型 Creational 结构型 Structural 和行为型 Behavioral 三种 创建型模式主要用于创建对象 结构型模式主要用于处理类或对象的组合 行为型模式主要用于描述对类或对象怎样交互和怎样分配职责 36 设计模式的定义与分类 设计模式的分类根据范围 即模式主要是用于处理类之间关系还是处理对象之间的关系 可分为类模式和对象模式两种 类模式处理类和子类之间的关系 这些关系通过继承建立 在编译时刻就被确定下来 是属于静态的 对象模式处理对象间的关系 这些关系在运行时刻变化 更具动态性 37 GoF设计模式简介 38 GoF设计模式简介 创建型模式抽象工厂模式 AbstractFactory 建造者模式 Builder 工厂方法模式 FactoryMethod 原型模式 Prototype 单例模式 Singleton 39 GoF设计模式简介 结构型模式适配器模式 Adapter 桥接模式 Bridge 组合模式 Composite 装饰模式 Decorator 外观模式 Facade 享元模式 Flyweight 代理模式 Proxy 40 GoF设计模式简介 行为型模式职责链模式 ChainofResponsibility 命令模式 Command 解释器模式 Interpreter 迭代器模式 Iterator 中介者模式 Mediator 备忘录模式 Memento 观察者模式 Observer 状态模式 State 策略模式 Strategy 模板方法模式 TemplateMethod 访问者模式 Visitor 41 设计模式的优点 设计模式是从许多优秀的软件系统中总结出的成功的 能够实现可维护性复用的设计方案 使用这些方案将避免我们做一些重复性的工作 而且可以设计出高质量的软件系统 设计模式的主要优点如下 设计模式融合了众多专家的经验 并以一种标准的形式供广大开发人员所用 它提供了一套通用的设计词汇和一种通用的语言以方便开发人员之间沟通和交流 使得设计方案更加通俗易懂 对于使用不同编程语言的开发和设计人员可以通过设计模式来交流系统设计方案 每一个模式都对应一个标准的解决方案 设计模式可以降低开发人员理解系统的复杂度 42 设计模式的优点 设计模式使人们可以更加简单方便地复用成功的设计和体系结构 将已证实的技术表述成设计模式也会使新系统开发者更加容易理解其设计思路 设计模式使得重用成功的设计更加容易 并避免那些导致不可重用的设计方案 设计模式使得设计方案更加灵活 且易于修改 设计模式的使用将
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 茶艺中级知识考试题库及答案
- 相遇问题试讲题目及答案
- 2025年九年级数学秋季开学摸底考(江苏专用)含答案
- 2025年G1工业锅炉司炉证考试题库及答案
- 2025年5月计算机文化基础模拟考试题与答案
- 2025物业服务合同管理规范范本
- 2025年4月肿瘤专科练习题库(含参考答案)
- 2025年4月基础医学概论模拟习题(含参考答案)
- 2025-2026学年七年级语文上册第五单元检测培优卷( 含答案)
- 2025年沪教版八年级英语上册预习Unit1【含答案解析】
- 欢迎一年级新生入学课件
- 译林版七年级上册英语阅读理解专项练习题100篇含答案
- 职业技术学院《汽车维修接待》课程思政标准
- 夫妻婚内财产协议书(2024版)
- 定制家具工厂外包合同模板
- 污水处理厂风险清单
- (正式版)JTT 1495-2024 公路水运危险性较大工程安全专项施工方案审查规程
- 19R505-19G540室外管道钢结构架空综合管廊敷设
- 机械制造基础说课市公开课一等奖省赛课微课金奖课件
- 智慧建筑评价标准
- 放射人员辐射安全培训课件
评论
0/150
提交评论