欢迎来到天天文库
浏览记录
ID:36442910
大小:326.10 KB
页数:46页
时间:2019-05-09
《《Java设计模式》PPT课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Java设计模式——钱江Java设计模式软件设计模式基础面向对象设计原则创建模式结构模式行为模式软件设计模式基础什么是设计模式广义讲,软件设计模式是可解决一类软件问题并能重复使用的软件设计方案狭义讲,设计模式是对被用来在特定场景下解决一般设计问题的类和相互通信的对象的描述。是在类和对象的层次描述的可重复使用的软件设计问题的解决方案模式体现的是程序整体的构思,所以有时候它也会出现在分析或者是概要设计阶段模式的核心思想是通过增加抽象层,把变化部分从那些不变部分里分离出来软件设计模式基础模式的基本要素模式名称(PatternName)问题(Problem):描述应该在何时使用模式。解释
2、了设计问题和问题存在的前因后果,可能还描述模式必须满足的先决条件解决方案(Solution):描述了设计的组成成分、相互关系及各自的职责和协作方式。模式就像一个模板,可应用于多种场合,所以解决方案并不描述一个具体的设计或实现,而是提供设计问题的抽象描述和解决问题所采用的元素组合(类和对象)效果(consequences):描述模式的应用效果及使用模式应权衡的问题软件设计模式基础如何描述设计模式模式名和分类:模式名简介的描述了模式的本质。意图:设计模式是做什么的?它的基本原理和意图是什么?它解决的是什么样的特定设计问题?别名:模式的其他名称动机:说明一个设计问题以及如何用模式中的类
3、、对象来解决该问题的特定情景适用性:什么情况下可以使用该设计模式?该模式可用来改进哪些不良设计?如何识别这些情况?结构:采用对象建模技术对模式中的类进行图形描述参与者:指设计模式中的类和(或)对象以及它们各自的职责软件设计模式基础如何描述设计模式协作:模式的参与者如何协作以实现其职责效果:模式如何支持其目标?使用模式的效果和所需做的权衡取舍?系统结构的哪些方面可以独立改变?实现:实现模式时需了解的一些提示、技术要点及应避免的缺陷,以及是否存在某些特定于实现语言的问题代码示例:用来说明怎样实现该模式的代码片段已知应用:实际系统中发现的模式的例子相关模式:与这个模式紧密相关的模式有哪
4、些?其不同之处是什么?这个模式应与哪些其他模式一起使用?动手实践从两幅扑克牌中任意抽取10张牌,打印出相同的牌面向对象设计原则面向对象设计原则单一职责原则(SRP,SingleResponsibilityPrinciple)开放封闭原则(OCP,OpenClosedPrinciple)依赖倒转原则(DIP,DependenceInversionPrinciple)接口隔离原则(ISP,InterfaceSegregationPrinciple)里氏代换原则(LSP,LiskovSubstitutionPrinciple)面向对象设计原则单一职责原则(SRP)对于单一职责原则,其核
5、心思想为:一个类,最好只做一件事,只有一个引起它的变化。单一职责原则可以看做是低耦合、高内聚在面向对象原则上的引申,将职责定义为引起变化的原因,以提高内聚性来减少引起变化的原因。职责过多,可能引起它变化的原因就越多,这将导致职责依赖,相互之间就产生影响,从而大大损伤其内聚性和耦合度。通常意义下的单一职责,就是指只有一种单一功能,不要为类实现过多的功能点,以保证实体只有一个引起它变化的原因。专注,是一个人优良的品质;同样的,单一也是一个类的优良设计。交杂不清的职责将使得代码看起来特别别扭牵一发而动全身,有失美感和必然导致丑陋的系统错误风险。面向对象设计原则开放封闭原则(OCP)开放
6、封闭原则是面向对象所有原则的核心,软件设计追求的目标就是封装变化、降低耦合,而开放封闭原则就是这一目标的最直接体现。开放封闭原则,其核心思想是:软件实体应该是可扩展的,而不可修改的。也就是,对扩展开放,对修改封闭的。因此,开放封闭原则主要体现在两个方面:对扩展开放,意味着有新的需求或变化时,可以对现有代码进行扩展,以适应新的情况对修改封闭,意味着类一旦设计完成,就可以独立完成其工作,而不要对其进行任何尝试的修改。实现开放封闭原则的核心思想就是对抽象编程,而不对具体编程,因为抽象相对稳定。让类依赖于固定的抽象,所以修改就是封闭的;而通过面向对象的继承和多态机制,又可以实现对抽象类的
7、继承,通过覆写其方法来改变固有行为,实现新的拓展方法,所以就是开放的。“需求总是变化”没有不变的软件,所以就需要用封闭开放原则来封闭变化满足需求,同时还能保持软件内部的封装体系稳定,不被需求的变化影响。面向对象设计原则依赖倒转原则(DIP)依赖倒置原则其核心思想是:依赖于抽象。具体而言就是高层模块不依赖于底层模块,二者都同依赖于抽象;抽象不依赖于具体,具体依赖于抽象。依赖一定会存在于类与类、模块与模块之间。当两个模块之间存在紧密的耦合关系时,最好的方法就是分离接口和实现:在依赖之
此文档下载收益归作者所有