欢迎来到天天文库
浏览记录
ID:40510492
大小:93.73 KB
页数:6页
时间:2019-08-03
《软件开发设计原则》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、软件开发设计原则类图:这幅图清晰地表达了六大设计原则,但仅限于它们叫什么名字而已,它们具体是什么意思呢?下面我将从原文、译文、理解、应用,这四个方面分别进行阐述。基本设计原则1、单一职责原则(SingleResponsibilityPrinciple-SRP)原文:Thereshouldneverbemorethanonereasonforaclasstochange。译文:永远不应该有多于一个原因来改变某个类。理解:对于一个类而言,应该仅有一个引起它变化的原因。说白了就是,不同的类具备不同的职责,各施其责。这就好比一个团队,大家分工协作,互不影响,各做各的事
2、情。应用:当我们做系统设计时,如果发现有一个类拥有了两种的职责,那就问自己一个问题:可以将这个类分成两个类吗?如果真的有必要,那就分吧。千万不要让一个类干的事情太多!2、开放封闭原则(OpenClosedPrinciple-OCP)原文:Softwareentitieslikeclasses,modulesandfunctionsshouldbeopenforextensionbutclosedformodifications。译文:软件实体,如:类、模块与函数,对于扩展应该是开放的,但对于修改应该是封闭的。理解:简言之,对扩展开放,对修改封闭。换句话说,可以
3、去扩展类,但不要去修改类。应用:当需求有改动,要修改代码了,此时您要做的是,尽量用继承或组合的方式来扩展类的功能,而不是直接修改类的代码。当然,如果能够确保对整体架构不会产生任何影响,那么也没必要搞得那么复杂了,直接改这个类吧。3、里氏替换原则(LiskovSubstitutionPrinciple-LSP)原文:Functionsthatusepointersorreferencestobaseclassesmustbeabletouseobjectsofderivedclasseswithoutknowingit。译文:使用基类的指针或引用的函数,必须是在
4、不知情的情况下,能够使用派生类的对象。理解:父类能够替换子类,但子类不一定能替换父类。也就是说,在代码中可以将父类全部替换为子类,程序不会报错,也不会在运行时出现任何异常,但反过来却不一定成立。应用:在继承类时,务必重写(Override)父类中所有的方法,尤其需要注意父类的protected方法(它们往往是让您重写的),子类尽量不要暴露自己的public方法供外界调用。该原则由麻省理工学院的BarbaraLiskov女士提出,她是美国第一位获取计算机博士学位的女性,曾经也获得过计算机图灵奖。4、最少知识原则(LeastKnowledgePrinciple-L
5、KP)原文:Onlytalktoyouimmediatefriends。译文:只与你最直接的朋友交流。理解:尽量减少对象之间的交互,从而减小类之间的耦合。简言之,一定要做到:低耦合,高内聚。应用:在做系统设计时,不要让一个类依赖于太多的其他类,需尽量减小依赖关系,否则,您死都不知道自己怎么死的。该原则也称为“迪米特法则(LawofDemeter)”,由IanHolland提出。这个人不太愿意和陌生人说话,只和他走得最近的朋友们交流。5、接口隔离原则(InterfaceSegregationPrinciple-ISP)原文:Thedependencyofonec
6、lasstoanotheroneshoulddependonthesmallestpossibleinterface。译文:一个类与另一个类之间的依赖性,应该依赖于尽可能小的接口。理解:不要对外暴露没有实际意义的接口。也就是说,接口是给别人调用的,那就不要去为难别人了,尽可能保证接口的实用性吧。她好,我也好。应用:当需要对外暴露接口时,需要再三斟酌,如果真的没有必要对外提供的,就删了吧。一旦您提供了,就意味着,您将来要多做一件事情,何苦要给自己找事做呢。6、依赖倒置原则(DependenceInversionPrinciple-DIP)原文:Highlevel
7、modulesshouldnotdependsuponlowlevelmodules。Bothshoulddependuponabstractions。Abstractionsshouldnotdependupondetails。Detailsshoulddependuponabstractions。译文:高层模块不应该依赖于低层模块,它们应该依赖于抽象。抽象不应该依赖于细节,细节应该依赖于抽象。理解:应该面向接口编程,不应该面向实现类编程。面向实现类编程,相当于就是论事,那是正向依赖(正常人思维);面向接口编程,相当于通过事物表象来看本质,那是反向依赖,即依
8、赖倒置(程序员思维)。应用:并不是说,
此文档下载收益归作者所有