欢迎来到天天文库
浏览记录
ID:36060315
大小:273.05 KB
页数:31页
时间:2019-05-01
《java面向对象程序设计杨晓燕第9章面向对象基本原则和模式》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第9章面向对象基本原则和模式Java面向对象技术万事万物都被永恒的真理支配并有规律的运行着。模式也是一样,不论那种模式,其背后都潜藏着一些“永恒的真理”,这个真理就是设计原则。设计原则往往比设计模式更重要。对于设计模式来说,为什么这个模式要这样解决这个问题,而另一个模式要那样,它们背后都遵循的就是永恒的设计原则。可以说,设计原则是设计模式的灵魂。UML类图UML(UnifiedModelingLanguage),即统一建模语言,是图标式软件设计语言。类图(Classdiagram)是最常用的UML图,显示类、接口以及它们之间的静态结构和关系,用于描述系统的
2、结构化设计。类图最基本的元素是类或者接口。类的UML图UML类图显示类的三个组成部分,第一是Java中定义的类名,第二个是该类的属性,第三个是该类提供的方法。第一层为类的名称,第二层是类的属性,第三层表示的是类的方法或称为操作。一个类图的类名是必须的类的UML图注意:属性和方法之前附加的可见性修饰符,“+”表示public,“-”表示private,“#”表示protected。省略这些修饰符表示具有package(包)级别的可见性。冒号后边表示数据的类型或方法的返回值类型。如果是抽象类,类名以斜体表示。UML类图及关系接口的UML表示依赖关系:虚线+箭头关
3、联关系:空心的菱形+实线箭头组合关系:实心的菱形+实线箭头实线+空心的三角形,起始端是子类,空心三角形指向终点端的父类。泛化关系:实现关系实现关系的UML表示法:虚线+空心三角形。发现变化,并封装变化在软件设计之初,需要发现所要开发软件中可能存在或已经存在的“变化”,然后利用抽象的方式对这些变化进行封装。抽象是没有具体的代码实现,抽象代表了一种可扩展。参阅教材例9.1单一职责原则和最少知识原则在单一职责(SingleResponsibilityPrinciple,简称为SRP)中,就一个类而言,应该仅有一个引起它变化的原因。也就是说,不要把变化原因各不相同的
4、职责放在一起。单一职责原则和最少知识原则最少知识原则(LeastKnowledgePrinciple,简称为LKP)又叫迪米特法则(LawofDemeter,简写为LoD),就是说一个对象应当对其他对象有尽可能少的了解。就像我国古代老子所说的“使民无知”和“小国寡民”的统治之术,“是以圣人之治,虚其心,实其腹,弱其志,常使民无知无欲。”以及“小国寡民……邻国相望,鸡犬之声相闻,民至老死,不相往来”。开放-封闭原则所谓“开放-封闭原则”(Open-ClosedPrinciple),也称“开-闭原则”,就是让设计对扩展开放,对修改关闭。也就是说,不允许更改的是系
5、统的抽象层,而允许更改的是系统的实现层。高层模块不应该依赖低层模块,抽象不应该依赖细节,使系统设计更为通用、更为稳定。面向抽象编程,这里的抽象主要指的是抽象类或接口。开放-封闭原则“开放-封闭原则”实质上是指当一个设计中增加新的模块时,不需要修改现有模块。子类型能够替换基类型原则子类型能够替换基类型原则也叫里氏代换原则(LiskovSubstitutionPrinciple,简称LSP),里氏代换原则中说,任何基类可以出现的地方,子类一定可以出现,且程序运行正常。特别提醒:在进行设计的时候,我们尽量从抽象类继承,而不是从具体类继承。如果从继承等级树来看,所有
6、叶子节点应当是具体类,而所有的树枝节点应当是抽象类或者接口。程序参考例9.3合成/聚合复用原则“优先使用对象组合,而不是类继承”是面向对象设计的又一个原则。并不是说继承不重要,而是因为每个学习OOP的人都知道OO的基本特性之一就是继承,以至于继承已经被滥用了,而对象组合技术往往被忽视了。一个类的成员变量可以是一个类创建的对象,那么该类创建的对象就包含了其他类的对象,也就是说该对象由其他对象组合而成了。对象与所包含的对象属于弱耦合关系,因为如果修改当前对象所包含的对象的类代码,不必修改当前对象的类的代码。9.3面向对象的设计模式模式是针对特定场景下的特定问题的
7、可重复、可表达的解决方案。如果你期望成为一名出色的Java软件开发者,就应该学习设计模式。面向对象模式代表了一种思想,而不是具体细节。策略模式的定义和结构TheStrategyDesignPatterndefinesafamilyofalgorithms,encapsulateseachone,andmakestheminterchangeable.Strategyletsthealgorithmsvaryindependentlyfromtheclientsthatuseit.(策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。
8、策略模式让算法独立于使用它的客户而独立变化。)算法就
此文档下载收益归作者所有