没有合适的资源?快使用搜索试试~ 我知道了~
3.1开闭原则此原则是由Bertrand Meyer提出的 3.2里氏代换原则里氏代换原则是由Barbara Liskov提出的 3.3依赖倒转原则指在软件里面
资源详情
资源评论
资源推荐
目录
一、 设计模式介绍................................................................................................1
1. 简介 ..........................................................................................................................................1
2. 设计框架 ..................................................................................................................................1
3. 设计原则 ..................................................................................................................................2
4. 基本模式 ..................................................................................................................................4
一、 设计模式介绍
1. 简介
设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过分类的、代码设计经
验的总结。
使用设计模式的目的:为了代码可重用性、让代码更容易被他人理解、保证代码可靠性。
设计模式使代码编写真正工程化;设计模式是软件工程的基石脉络,如同大厦的结构一样。
设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员
所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方
案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。
设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。
使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性。毫无疑问,设计
模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的
基石,如同大厦的一块块砖石一样。项目中合理地运用设计模式可以完美地解决很多问题,每
种模式在现实中都有相应的原理来与之对应,每种模式都描述了一个在我们周围不断重复发生
的问题,以及该问题的核心解决方案,这也是设计模式能被广泛应用的原因。
2. 设计框架
可复用面向对象软件系统一般划分为两大类:应用程序工具箱和框架(Framework),我们
平时开发的具体软件都是应用程序,Java 的 API 属于工具箱;而框架是构成一类特定软件可复
用设计的一组相互协作的类,EJB(EnterpriseJavaBeans)是 Java 应用于企业计算的框架。
框架通常定义了应用体系的整体结构类和对象的关系等等设计参数,以便于具体应用实现
者能集中精力于应用本身的特定细节。框架主要记录软件应用中共同的设计决策,框架强调设
计复用,因此框架设计中必然要使用设计模式。
另外,设计模式有助于对框架结构的理解,成熟的框架通常使用了多种设计模式,如果你熟
悉这些设计模式,毫无疑问,你将迅速掌握框架的结构,我们一般开发者如果突然接触 EJB、
Spring 等框架,会觉得特别难学、难掌握,那么转而先掌握设计模式,无疑是给了你剖析 EJB
或 J2EE 系统的一把利器。
3. 设计原则
为什么要提倡“Design Pattern 呢?根本原因是为了代码复用,增加可维护性。那么怎么才
能实现代码复用呢?面向对象有几个原则:单一职责原则 (Single Responsiblity Principle SRP)
开闭原则(Open Closed Principle,OCP)、里氏代换原则(Liskov Substitution Principle,LSP)、
依赖倒转原则(Dependency Inversion Principle,DIP)、接口隔离原则(Interface Segregation
Principle,ISP)、合成/聚合复用原则(Composite/Aggregate Reuse Principle,CARP)、最小知识
原则(Principle of Least Knowledge,PLK,也叫迪米特法则)。开闭原则具有理想主义的色彩,
它是面向对象设计的终极目标。其他几条,则可以看做是开闭原则的实现方法。
设计模式就是实现了这些原则,从而达到了代码复用、增加可维护性的目的。
开闭原则:实现热插拔,提高扩展性。
里氏代换原则:实现抽象的规范,实现子父类互相替换;
依赖倒转原则:针对接口编程,实现开闭原则的基础;
接口隔离原则:降低耦合度,接口单独设计,互相隔离;
迪米特法则,又称不知道原则:功能模块尽量独立;
合成复用原则:尽量使用聚合,组合,而不是继承;
3.1 开闭原则
此 原 则 是 由 Bertrand Meyer 提 出 的 。 原 文 是 :“ Software entities should be open for
extension,but closed for modification”。就是说模块应对扩展开放,而对修改关闭。模块应尽量
在不修改原(是“原”,指原来的代码)代码的情况下进行扩展。
工厂模式是对具体产品进行扩展,有的项目可能需要更多的扩展性,要对这个“工厂”也
进行扩展,那就成了“抽象工厂模式”。
3.2 里氏代换原则
里氏代换原则是由 Barbara Liskov 提出的。如果调用的是父类的话,那么换成子类也完全
可以运行。
可以说:里氏代换原则是继承复用的一个基础。
3.3 依赖倒转原则
指在软件里面,把父类都替换成它的子类,程序的行为没有变化。简单的说,子类型能够
替换掉它们的父类型。依赖性倒转其实可以说是面向对象设计的标志,用哪种语言编程并不是
很重要。
3.4 接口隔离原则
定制服务的例子,每一个接口应该是一种角色,不多不少,不干不该干的事,该干的事都
要干。
3.5 合成/聚合复用
合成/聚合复用原则(Composite/Aggregate Reuse Principle,CARP)经常又叫做合成复用原
则。合成/聚合复用原则就是在一个新的对象里面使用一些已有的对象,使之成为新对象的一
部分;新的对象通过向这些对象的委派达到复用已有功能的目的。它的设计原则是:要尽量使
用合成/聚合,尽量不要使用继承。
就是说要少用继承,多用合成关系来实现。我曾经这样写过程序:有几个类要与数据库打
交道,就写了一个数据库操作的类,然后别的跟数据库打交道的类都继承这个。结果后来,我
修改了数据库操作类的一个方法,每个类都需要改动。“牵一发而动全身”!面向对象是要把波
动限制在尽量小的范围。
在 Java 中,应尽量针对 Interface 编程,而非实现类。这样,更换子类不会影响调用它方
法的代码。要让各个类尽可能少的跟别人联系,“不要与陌生人说话”。这样,城门失火,才不
至于殃及池鱼。扩展性和维护性才能提高。
3.6 最少知识原则
也叫迪米特法则。不要和陌生人说话,即一个对象应对其他对象有尽可能少的了解。
3.7 综述
设计模式使人们可以更加简单方便地复用成功的设计和体系结构。将已证实的技术表述成
设计模式也会使新系统开发者更加容易理解其设计思路。
3.8 模式名称
一个助记名,它用一两个词来描述模式的问题、解决方案和效果。命名一个新的模式增加
了我们的设计词汇。设计模式允许我们在较高的抽象层次上进行设计。基于一个模式词汇表,
我们自己以及同事之间就可以讨论模式并在编写文档时使用它们。模式名可以帮助我们思考,
便于我们与其他人交流设计思想及设计结果。找到恰当的模式名也是我们设计模式编目工作的
难点之一。
3.9 问题
描述了应该在何时使用模式。它解释了设计问题和问题存在的前因后果,它可能描述了特
定的设计问题,如怎样用对象表示算法等。也可能描述了导致不灵活设计的类或对象结构。有
时候,问题部分会包括使用模式必须满足的一系列先决条件。
3.10 解决方案
描述了设计的组成成分,它们之间的相互关系及各自的职责和协作方式。因为模式就像一
个模板,可应用于多种不同场合,所以解决方案并不描述一个特定而具体的设计或实现,而是
提供设计问题的抽象描述和怎样用一个具有一般意义的元素组合(类或对象组合)来解决这个
问题。
剩余13页未读,继续阅读
经年哲思
- 粉丝: 15
- 资源: 329
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0