




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、软件开发中的设计原则摘要:列举了一些面向对象编程中的基本设计原则,分析了这些设计原则的优缺点及相互关系,说明了如何使用这些设计原则以获得良好的系统设计,最后说明了应该何时及怎样使用这些设计原则。关键词:软件开发、面向对象、设计原则1基本设计原则1.1里氏替换原则里氏替换原则(LiskovSubstitutionPrinciple,常缩写为LSP),由BarbaraLiskov提出。“任何基类出现的地方,子类一定可能出现。”它的严格表达是:“如果对于每一个类型为T1的对象01,都有类型为T2的对象O2,使得以T1定义的所有程序P在所有的对象O1都代换为O2时,程序P的行为没有变化,那么类型T2是
2、类型T1的子类型。”LSP原则要求子类可以无条件的替代父类,子类不能对父类没有暴露的接口进行扩展,客户要调用功能只能通过父类暴露的接口来调用不能擅自向子类调用。1.2迪米特法则迪米特法则(LawofDemeter常缩写为LoD)又叫作最少知识原则(LeastKnowledgePrinciple简写LKP),由美国NortheasternUniversity的IanHolland提出。是说一个对象应当对其他对象有尽可能少的了解。它有多种表述方式,较有代表性的有如下几种:只与你直接的朋友们通信;不要和“陌生人”说话;每一个软件单位对其他的单们都只有最少的知识,而且局限于那些与本单位密切相关的软件单
3、位。如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用。如果其中一个类需要调用另一个类的某一个方法的话,可以通过第三者转发这个调用。1.3接口隔离原则接口隔离原则(InterfaceSegregationPrinciple常缩写为ISP)是说使用多个专门的接口比使用单一的总接口要好。也就是说,一个类对另外一个类的依赖性应当是建立在最小的接口上。1.4合成/聚合复用原则合成/聚合复用原则(Composite/AggregateReusePrinciple常缩写为CARP)是说“在一个新的对象里面使用一些已有的对象,使之成为新对象的一部分;新的对象通过向这些对象的委派达到复用这些对
4、象的目的。”1.5依赖倒转原则依赖倒置(DependeneeInversionPrinciple常缩写为DIP)原则讲的是:抽象不应当依赖于细节;细节应当依赖于抽象。另一种表述是:要针对接口编程,不要针对实现编程。针对接口编程的意思是说,应当使用JAVA接口和抽象JAVA类进行变量的类型声明、参量的类型声明、方法的返回类型声明,以及数据类型的转换。不要针对实现编程的意思是说,不应当使用具体JAVA类进行变量的类型声明、参量的类型声明、方法的返回类型声明,以及数据类型的转换。要保证做到这上点,一个具体JAVA类应当只实现JAVA接口和抽象JAVA类中声明过的方法,而不应当给出多余的方法。1.6开
5、放封闭原则开放/圭寸闭原则(Open-ClosedPrinciple,常缩写为OCP)由BertrandMeyer提出,是说“一个软件实体应该对扩展开放,对修改关闭”在设计一个模块的时候,应当使这个模块可以在不被修改的前提下被扩展。换言之,应当可以在不必修改源代码的情况下改变这个模块的行为。2设计原则之间的关系2.1里氏替换原则里氏代换原则是使代码符合开闭原则的一个重要保证。实现开闭原则的关键步骤是抽象化,基类与子类之间的继承关系就是一种抽象化的体现。因此,里氏代换原则是实现抽象化的一种规范。试想,如果某个函数(或方法)使用了指向基类的指针或引用,但是类的设计却违背了LSP原则,那么这个函数就
6、必须了解该基类的所有派生类。这个函数显然违背开放-封闭原则OCP,因为一旦新构建该基类的子类,此函数就需要修改。一般而言,违返里氏代换原则的,也违背开闭原则,反过来并不一定成立。2.2依赖倒转原则依赖倒转原则讲的是,要依赖于抽象,不要依赖于实现。开放/封闭原则与它之间是目标与手段的关系。开闭原则是目标,而达到这一原则的手段是依赖倒转原则。要想实现开闭原则,就应当坚持依赖倒转原则。违反依赖倒转原则就不可能达到开闭原则。2.3合成/聚合复用原则合成/聚合复用原则是与里氏代换原则相辅相成的,两者又都是对实现开闭原则的具体步骤的规范。前者要求设计师首先考虑合成/聚合关系,后者要求使用继承关系时,必须确
7、定这个关系是符合一定条件的。遵守合成/聚合复用原则是实现开闭原则的必要条件,违反这一原则就无法使系统实现开闭原则。2.4迪米特法则与接口隔离原则一个遵守迪米特法则设计出来的系统在功能需要扩展时,会相对容易的做到对修改的关闭。迪米特法则是一条通向开闭原则的道路。接口隔离原则与广义的迪米特法则都是对一个软件实体与其他软件实体的通信的限制。广义的迪米特法则要求尽可能的限制通信的宽度和深度。接口隔离原则所限制的是通信的宽度,也就是说,通信应该尽可能窄。遵守接口隔离原则和迪米特法则,会使一个系统在功能扩展的时候,不会将修改的压力传递到其他的对象。2.5开放封闭原则开放/封闭原则是面向对象的可复用设计的基
8、石。其他设计原则(里氏代换原则、依赖倒转原则、合成/聚合复用原则、迪米特法则、接口隔离原则)是实现开放/封闭原则的手段和工具。3设计原则与良好的00系统设计一个好的系统设计应该有如下性质:易维护、易扩展、易复用、灵活性好。换言之,也就是一个好的00设计应该能较好的应对需求的变化,具有较高的可复用性。需求的改变是一个软件整个生命周期中都存在的问题,所以才要求好的系统设计要易维护、易扩展、灵活性好;而良好的可复用性可以提高系统的可维护性、可扩展和灵活性。系统的可扩展性是由开闭原则、里氏替换原则、依赖倒转原则和组合/聚合复用原则所保证的。系统的灵活性是由开闭原则、迪米特法则、接口隔离原则所保证的。开
9、闭原则、里氏替换原则、依赖倒转原则、接口隔离原则、组合/聚合复用原则和迪米特法则,这些设计原则首先都是复用的原则,遵循这些原则可以有效的提高系统的复用性,同时提高系统的可维护性。4结束语所有的原则都应该在有帮助的时候才遵守。因为使用这些原则是需要付出代价的。为了获得灵活性就需要进行抽象或者加入中间层,这会导致运行速度的降低;为了获得可维护性和可复用性需要加入额外的类或对象,这会导致系统占用更多的空间;所有这些原则的使用都会使系统变得更复杂,更难于理解。所以,在使用这些原则之前必须全盘考虑所有的因素。参考文献:李超,余小平基于矩阵的Apriori算法的改进方法J.计算机工程,2006(23).夏红霞,水俊峰,钟洛,等.基于SIIP的分布式数据挖掘系统的设计J.武汉理工大学学报,2003(1).DesignPrincipleofSoflwareDevelopmentAbstract:Thispaperdiscussessomeobjectorientedprogramminginbasicdesignprinciple,analyzesthedesignprinciplesandtheadvantagesanddisadvantagesofmutualrelations,illustrateshowtousethesedesignprin
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年竞争处长考试试题及答案
- 微机模拟考试题及答案
- 中考盐城物理试卷及答案
- 2025年投递理论考试试题及答案
- 化学史(元素周期律发现)试题
- 化学创新学习想法评价试题
- 古代导游考试题及答案解析
- 大专报名考试试题及答案
- 个人黄土地承包协议6篇
- 高速稽核员考试题及答案
- 2025年广东中山市生态环境局所属事业单位招聘事业单位人员历年自考难、易点模拟试卷(共500题附带答案详解)
- 肾癌放射治疗
- 计算机网络(中国石油大学(华东))知到智慧树章节测试课后答案2024年秋中国石油大学(华东)
- 《英文海报的写法》课件
- Unit 2 My school things第二课时 start up(说课稿)-2024-2025学年外研版(三起)(2024)英语三年级上册
- 大学体育知到智慧树章节测试课后答案2024年秋云南民族大学
- 手术室实习生授课
- 破茧之路曙光初现-“十五五”高端医疗器械产业发展趋势及落地策略
- 胰腺假性囊肿治疗
- 2024-2025学年甘肃省高一数学上学期期中考试卷
- 2024年职工职业技能大赛数控铣工赛项理论考试题库-下(多选、判断题)
评论
0/150
提交评论