面向对象方法与技术-Part4-OO设计原则讲述.ppt

面向对象方法与技术-Part4-OO设计原则讲述.ppt

  1. 1、本文档共108页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
面向对象方法与技术-Part4-OO设计原则讲述

面向对象方法与技术 4/10/2017 2 课程内容 Part 1: 面向对象原理 第一章 面向对象的引入和发展 第二章 面向对象基本概念和程序设计 Part 2: UML 第三章 UML基础 Part 3: 面向对象设计 第四章 面向对象设计模式 第五章 面向对象设计原则 第5章 面向对象设计原则 4/10/2017 4 设计目标 可扩展性(Extensibility):新功能易加入系统。 灵活性(Flexibility):允许代码修改平稳发生,不会涉及很多其他模块。 可插入性(Pluggability):容易将一个类换为另一个具有同样接口的类。 4/10/2017 5 使一个系统可在更高的层次上提供了可复用性 抽象化和继承:使概念和定义可复用 多态:使实现和应用可复用 抽象化和封装:可保持和促进系统的可维护性 面向对象设计 4/10/2017 6 面向对象设计中,可维护性复用是以设计原则和设计模式为基础的。 面向对象复用 4/10/2017 7 1. 开闭原则OCP:Open-Closed Principle 2. 里氏替换原则LSP:Liskov Substitution Principle 3. 依赖倒转原则DIP:Dependency Inversion Principle 4. 接口隔离原则ISP:Interface Segregation Principle 5. 组合复用原则CRP:Compositoin Resuse Principle 6. 迪米特法则LoD:Law of Demeter 面向对象复用原则 4/10/2017 8 软件组成实体应该是可扩展的,但是不可修改的。( Software Entities Should Be Open For Extension, But Closed For Modification) 1.开-闭原则OCP 4/10/2017 9 开放-封闭法则认为应该试图去设计出永远也不需要改变的模块。 关键在于抽象化:可给系统定义一个一劳永逸,不再更改的抽象设计,此设计允许有无穷无尽的行为在实现层被实现。抽象层预见所有扩展。 PC外设 开-闭原则 设计原则:开-闭原则、封装可变性 Bertrand Meyer 对象技术大师 法国工程院院士 苏黎世工学院计算机系教授 发明了Eiffel语言和按契约设计(Design by Contract)的思想 早年参与了Z形式语言的设计 名著《面向对象软件构造》 10 设计原则:开-闭原则、封装可变性 玉帝遵照“开-闭”原则维护天庭秩序 当年孙悟空大闹天空,向天庭发出挑战:“皇帝轮流做,明年到我家......只教他搬出去,将天宫让与我!” 太白金星给玉皇大帝 建议道:“降一道招安 圣旨,把他宣来上界... 与他籍名在箓... 一则不动众劳师, 二则收仙有道也。” 11 设计原则:开-闭原则、封装可变性 分析 “不动众劳师”、不破坏天规就是“闭” 收仙有道就是“开” 招安,就是玉帝的“开-闭”原则:既让孙悟空满意,又不必更改天庭现有的秩序 12 设计原则:开-闭原则、封装可变性 分析 现有的天庭秩序是系统的最高抽象层 弼马温这个职位只是具体的实现层 招安的关键就是不允许更改现有的天庭秩序,但是允许将妖猴纳入到文武百官中,从而扩展了这一秩序的具体实现 13 设计原则:开-闭原则、封装可变性 “封装可变性原则” gof:“考虑你的设计中什么可能会发生变化......考虑你允许什么发生变化而不让这一变化导致重新设计” Shalloway:“发现变化点,并封装之” 一种可变性不应散落在代码的很多角落 一种可变性不应当与另一种可变性混合在一起 14 设计原则:开-闭原则、封装可变性 设计模式对“开-闭”原则的支持 比如Bridge桥梁模式:将抽象部分和实现部分分别封装,可以分别独立变化 15 设计原则:开-闭原则、封装可变性 对“开-闭”原则支持的不好的例子 java.util.Calendar 16 java提供的描述历法的抽象类 描述公历的子类 我们希望再派生出一个子类,用于描述阴历 设计原则:开-闭原则、封装可变性 问题: Calendar只定义了适用于公历的常量和方法 17 public final static int SUNDAY = 1; public final static int MONDAY = 2; ... public final static int JANUARY = 0; public final static int FEBRUARY = 1; ... public void setFistDayOfWeek(int value); public int getFirstDayOfWeek(); ... 设计

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档