设计模式的原则与策略_第1页
设计模式的原则与策略_第2页
设计模式的原则与策略_第3页
设计模式的原则与策略_第4页
全文预览已结束

下载本文档

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

文档简介

1、设计模式的原则与策略1、开闭原则(open-closed principle, OCP )模块、方法和类应该对扩展开放,对修改封闭。完全遵守开闭原则几乎是不可能的,但是它可以作为一个目标,指引正确的方向。代码越遵守这一原则,以后适应新(而且可能是无法预测的)需求就越轻松。2、依赖倒置原则(dependency inversion principle,DIP)高层模块不应该依赖于低层模块。高层模块和低层模块都应该依赖抽象。抽象不应该依赖于细节。细节应该依赖于抽象。Christopher Alexander称此为“复杂化”一种从最简单(概念性)的层次开始,然后逐渐添加细节和特征,随着逐步深化,设计

2、也渐趋复杂的过程。复杂化的依 赖倒置是使用设计模式的中心基础原则。这一原则隐含着使用对象和被使用对象之间只能在概念层次存在耦合,而非实现 层次,这与设计模式一书中所建议的应该,按接口设计”可以说是英雄所见略 同。3、里氏代换原则(LSP)子类型必须能够替换掉它们的父类型。一个从基类派生的类应该支持基类的所有行为。-(只要有可能)让使用对象无法知道是否存在派生类。实践中,这意味着子类 型不应该在基类型的公开接口中添加新的公开方法。这还意味着,基类型必须是 所建模的概念的完整规格说明。这和目前所理解的子类的扩展的作用相悖,实践中可能会遇到困难,所以以前 一直知道这个原则,但却放弃遵循。其实是理解得

3、不对,看下面这个例子就知道 以后应该怎么做了。但是,“子类型不应该在基类型的公开接口中添加新的公开方法”,这一点似乎很 少能做得到。例问题:一个鸟类,一个企鹅类,如果鸟是可以飞的,企鹅不会飞,那么企鹅是鸟 吗?企鹅可以继承鸟这个类吗?回答:鸟会飞,企鹅不会飞,尽管在生物学分类上,企鹅是一种鸟,但在编程世 界里,企鹅不能继承“鸟类”,因为企鹅不能支持“鸟类”的飞这个动作。4、封装变化原则不让一个类封装两个要变化的事物,除非这些变化明确地耦合在一起。5、单一职责原则(SRP)就一个类而言,应该仅有一个引起它变化的原因。6、迪米特法( LoD)(最少知识原则)如果两个类不必彼此直接通信,那么这两个类

4、不应当发生直接的相互作用。如 果其中一个类需要调用另一个类的某一个方法的话,可以通过第三者转发这个 调用。迪米特法则首先强调的前提是在类的结构设计上,每一个类都应当尽量降低成员 的访问权限,也就是说,一个类包装好自己的private状态,不需要让别的类知 道的字段或行为就不要公开。迪米特法其根本思想,是强调了类之间的松耦合。只有解耦后,类的复用性才能 提高。迪米特法则还有一个更简单的的定义:只与直接的朋友通信。首先来解释一下什 么是直接的朋友:每个对象都会与其他对象有耦合关系,只要两个对象之间有耦 合关系,我们就说这两个对象之间是朋友关系。耦合的方式很多,依赖、关联、 组合、聚合等。其中,我们称出现成员变量、方法参数、方法返回值中的类为 直接的朋友,而出现在局部变量中的类则不是直接的朋友。也就是说,陌生的类 最好不要作为局部变量的形式出现在类的内部。7、合成/聚合复用原则(CARP)尽量使用合成/聚合,尽量不要使用类继承。好处是,优先使用对

温馨提示

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

评论

0/150

提交评论