面向对象类的设计原则

面向对象类的设计原则

ID:16428895

大小:274.00 KB

页数:12页

时间:2018-08-09

面向对象类的设计原则_第1页
面向对象类的设计原则_第2页
面向对象类的设计原则_第3页
面向对象类的设计原则_第4页
面向对象类的设计原则_第5页
资源描述:

《面向对象类的设计原则》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、类的设计原则 2009-12-23来源:lifevv.com 开闭原则Softwareentities(classes,modules,function,etc.)shouldbeopenforextension,butclosedformodification.软件实体(模块,类,方法等)应该对扩展开放,对修改关闭。开闭原则(OCP:Open-ClosedPrinciple)是指在进行面向对象设计(OOD:ObjectOrientedDesign)中,设计类或其他程序单位时,应该遵循:-对扩展开放(open)-对修

2、改关闭(closed)的设计原则。开闭原则是判断面向对象设计是否正确的最基本的原理之一。根据开闭原则,在设计一个软件系统模块(类,方法)的时候,应该可以在不修改原有的模块(修改关闭)的基础上,能扩展其功能(扩展开放)。-扩展开放:某模块的功能是可扩展的,则该模块是扩展开放的。软件系统的功能上的可扩展性要求模块是扩展开放的。-修改关闭:某模块被其他模块调用,如果该模块的源代码不允许修改,则该模块修改关闭的。软件系统的功能上的稳定性,持续性要求是修改关闭的。这也是系统设计需要遵循开闭原则的原因:1)稳定性。开闭原则要求扩

3、展功能不修改原来的代码,这可以让软件系统在变化中保持稳定。2)扩展性。开闭原则要求对扩展开放,通过扩展提供新的或改变原有的功能,让软件系统具有灵活的可扩展性。遵循开闭原则的系统设计,可以让软件系统可复用,并且易于维护。开闭原则的实现方法为了满足开闭原则的对修改关闭(closedformodification)原则以及扩展开放(openforextension)原则,应该对软件系统中的不变的部分加以抽象,在面向对象的设计中,-可以把这些不变的部分加以抽象成不变的接口,这些不变的接口可以应对未来的扩展;-接口的最小功能设

4、计原则。根据这个原则,原有的接口要么可以应对未来的扩展;不足的部分可以通过定义新的接口来实现;-模块之间的调用通过抽象接口进行,这样即使实现层发生变化,也无需修改调用方的代码。接口可以被复用,但接口的实现却不一定能被复用。接口是稳定的,关闭的,但接口的实现是可变的,开放的。可以通过对接口的不同实现以及类的继承行为等为系统增加新的或改变系统原来的功能,实现软件系统的柔软扩展。简单地说,软件系统是否有良好的接口(抽象)设计是判断软件系统是否满足开闭原则的一种重要的判断基准。现在多把开闭原则等同于面向接口的软件设计。开闭原

5、则的相对性软件系统的构建是一个需要不断重构的过程,在这个过程中,模块的功能抽象,模块与模块间的关系,都不会从一开始就非常清晰明了,所以构建100%满足开闭原则的软件系统是相当困难的,这就是开闭原则的相对性。但在设计过程中,通过对模块功能的抽象(接口定义),模块之间的关系的抽象(通过接口调用),抽象与实现的分离(面向接口的程序设计)等,可以尽量接近满足开闭原则。单一职责原则前言RobertC.Martin氏为我们总结了在面向对象的设计(OOD)中应该遵循的原则,这些原则被称为“PrinciplesofOOD”,关于“P

6、rinciplesofOOD”的相关文章可以从ObjectMenter得到。本文介绍“PrinciplesofOOD”中的单一职责原则:SingleResponsibilityPrinciple(SRP)。可以从这里查看SingleResponsibilityPrinciple(SRP)的原文。概要Thereshouldneverbemorethanonereasonforaclasstochange.永远不要让一个类存在多个改变的理由。换句话说,如果一个类需要改变,改变它的理由永远只有一个。如果存在多个改变它的理由

7、,就需要重新设计该类。SRP(SingleResponsibilityPrinciple)原则的核心含意是:只能让一个类有且仅有一个职责。这也是单一职责原则的命名含义。为什么一个类不能有多于一个以上的职责呢?如果一个类具有一个以上的职责,那么就会有多个不同的原因引起该类变化,而这种变化将影响到该类不同职责的使用者(不同用户):1,一方面,如果一个职责使用了外部类库,则使用另外一个职责的用户却也不得不包含这个未被使用的外部类库。2,另一方面,某个用户由于某个原因需要修改其中一个职责,另外一个职责的用户也将受到影响,他将

8、不得不重新编译和配置。这违反了设计的开闭原则,也不是我们所期望的。职责的划分既然一个类不能有多个职责,那么怎么划分职责呢?Robert.CMartin给出了一个著名的定义:所谓一个类的一个职责是指引起该类变化的一个原因。Ifyoucanthinkofmorethanonemotiveforchangingaclass,thenthatclass

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。