Java面向对象程序设计杨晓燕第9章面向对象基本原则和模式课件_第1页
Java面向对象程序设计杨晓燕第9章面向对象基本原则和模式课件_第2页
Java面向对象程序设计杨晓燕第9章面向对象基本原则和模式课件_第3页
Java面向对象程序设计杨晓燕第9章面向对象基本原则和模式课件_第4页
Java面向对象程序设计杨晓燕第9章面向对象基本原则和模式课件_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第9章面向对象基本原则

和模式

Java面向对象技术

万事万物都被永恒的真理支配并有规律的运行着。模式也是一样,不论那种模式,其背后都潜藏着一些“永恒的真理”,这个真理就是设计原则。设计原则往往比设计模式更重要。对于设计模式来说,为什么这个模式要这样解决这个问题,而另一个模式要那样,它们背后都遵循的就是永恒的设计原则。可以说,设计原则是设计模式的灵魂。

UML类图

UML(UnifiedModelingLanguage),即统一建模语言,是图标式软件设计语言。类图(Classdiagram)是最常用的UML图,显示类、接口以及它们之间的静态结构和关系,用于描述系统的结构化设计。类图最基本的元素是类或者接口。类的UML图注意:属性和方法之前附加的可见性修饰符,“+”表示public,“-”表示private,“#”表示protected。省略这些修饰符表示具有package(包)级别的可见性。冒号后边表示数据的类型或方法的返回值类型。如果是抽象类,类名以斜体表示。UML类图及关系接口的UML表示关联关系:空心的菱形+实线箭头

组合关系:实心的菱形+实线箭头

实线+空心的三角形,起始端是子类,空心三角形指向终点端的父类。

泛化关系:发现变化,并封装变化在软件设计之初,需要发现所要开发软件中可能存在或已经存在的“变化”,然后利用抽象的方式对这些变化进行封装。抽象是没有具体的代码实现,抽象代表了一种可扩展。参阅教材例9.1单一职责原则和最少知识原则在单一职责(SingleResponsibilityPrinciple,简称为SRP)中,就一个类而言,应该仅有一个引起它变化的原因。也就是说,不要把变化原因各不相同的职责放在一起。单一职责原则和最少知识原则最少知识原则(LeastKnowledgePrinciple,简称为LKP)又叫迪米特法则(LawofDemeter,简写为LoD),就是说一个对象应当对其他对象有尽可能少的了解。就像我国古代老子所说的“使民无知”和“小国寡民”的统治之术,“是以圣人之治,虚其心,实其腹,弱其志,常使民无知无欲。”以及“小国寡民……邻国相望,鸡犬之声相闻,民至老死,不相往来”。开放-封闭原则“开放-封闭原则”实质上是指当一个设计中增加新的模块时,不需要修改现有模块。

子类型能够替换基类型原则子类型能够替换基类型原则也叫里氏代换原则(LiskovSubstitutionPrinciple,简称LSP),里氏代换原则中说,任何基类可以出现的地方,子类一定可以出现,且程序运行正常。特别提醒:在进行设计的时候,我们尽量从抽象类继承,而不是从具体类继承。如果从继承等级树来看,所有叶子节点应当是具体类,而所有的树枝节点应当是抽象类或者接口。

程序参考例9.3合成/聚合复用原则“优先使用对象组合,而不是类继承”是面向对象设计的又一个原则。并不是说继承不重要,而是因为每个学习OOP的人都知道OO的基本特性之一就是继承,以至于继承已经被滥用了,而对象组合技术往往被忽视了。一个类的成员变量可以是一个类创建的对象,那么该类创建的对象就包含了其他类的对象,也就是说该对象由其他对象组合而成了。对象与所包含的对象属于弱耦合关系,因为如果修改当前对象所包含的对象的类代码,不必修改当前对象的类的代码。策略模式的定义和结构TheStrategyDesignPatterndefinesafamilyofalgorithms,encapsulateseachone,andmakestheminterchangeable.Strategyletsthealgorithmsvaryindependentlyfromtheclientsthatuseit.(策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。)算法就是需要完成某项任务的过程。算法是个过程——包含一些指令序列,接受收入,产生输出。单个方法也许也是个算法:它接受输入——其参数列表——并产生输出作为返回值。在某些情况下,算法也许完全包含在一个方法中,但是算法的实现经常依赖于多个方法的相互作用。案例见教材9.3.2中介者模式的结构与应用官方策略模式的定义:TheMediatorPatterndefineanobjectthatencapsulateshowasetofobjectsinteract.中介者模式用一个中介对象来封装一系列的对象交互,从而使它们可以较松散的耦合。体现“优先使用对象组合,少用继承”的原则。

模板方法要点:(1)模板方法中的非final方法(默认实现或不做事的方法)称为“钩子”。(2)钩子可以简化子类的实现。(3)钩子可以让子类能够有机会对模板方法中某些即将发生的(或刚刚发生的)步骤做出反应。(4)primitiveMethod的命名最好加上do前缀。(5)工厂模式为模板方法模式的特例。(6)除了可以灵活应对子步骤的变化外,“不用调用我,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论