欢迎来到天天文库
浏览记录
ID:57682756
大小:762.96 KB
页数:49页
时间:2020-08-31
《接口与接口设计原则.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、接口与接口设计原则一.11种设计原则1.单一职责原则-SingleResponsibilityPrinciple(SRP)就一个类而言,应该仅有一个引起它变化的原因。职责即为“变化的原因”。2.开放-封闭原则-OpenClosePrinciple(OCP)软件实体(类、模块、函数等)应该是可以扩展的,但是不可修改。对于扩展是开放的,对于更改是封闭的.关键是抽象.将一个功能的通用部分和实现细节部分清晰的分离开来。开发人员应该仅仅对程序中呈现出频繁变化的那些部分作出抽象.拒绝不成熟的抽象和抽象本身一样重要)3.里氏替换原则-LiskovSubstitutionPrinc
2、iple(LSP)子类型(subclass)必须能够替换掉它们的基类型(superclass)。4.依赖倒置原则(IoCP)或依赖注入原则-DependenceInversionPrinciple(DIP)抽象不应该依赖于细节。细节应该依赖于抽象。Hollywood原则:"Don'tcallus,we'llcallyou".程序中所有的依赖关系都应该终止于抽象类和接口。针对接口而非实现编程。任何变量都不应该持有一个指向具体类的指针或引用。任何类都不应该从具体类派生。任何方法都不应该覆写他的任何基类中的已经实现了的方法。5.接口隔离原则(ISP)不应该强迫客户依赖于它
3、们不用的方法。接口属于客户,不属于它所在的类层次结构。多个面向特定用户的接口胜于一个通用接口。6.重用发布等价原则(REP)重用的粒度就是发布的粒度。7.共同封闭原则(CCP)包(类库、DLL)中的所有类对于同一类性质的变化应该是共同封闭的。一个变化若对一个包产生影响,则将对该包中的所有类产生影响,而对于其他的包不造成任何影响。8.共同重用原则(CRP)一个包(类库、DLL)中的所有类应该是共同重用的。如果重用了包(类库、DLL)中的一个类,那么就要重用包(类库、DLL)中的所有类。(相互之间没有紧密联系的类不应该在同一个包(类库、DLL)中。)包(类库、DLL)耦
4、合原则9.无环依赖原则(ADP)在包的依赖关系图中不允许存在环。10.稳定依赖原则(SDP)朝着稳定的方向进行依赖。应该把封装系统高层设计的软件(比如抽象类)放进稳定的包中,不稳定的包中应该只包含那些很可能会改变的软件(比如具体类)。11.稳定抽象原则(SAP)包的抽象程度应该和其稳定程度一致。一个稳定的包应该也是抽象的,一个不稳定的包应该是抽象的.其它扩展原则12.BBP(BlackBoxPrinciple)黑盒原则多用类的聚合,少用类的继承。13.DAP(DefaultAbstractionPrinciple)缺省抽象原则在接口和实现接口的类之间引入一个抽象类,
5、这个类实现了接口的大部分操作.14.IDP(InterfaceDesignPrinciple)接口设计原则规划一个接口而不是实现一个接口。15.DCSP(Don'tConcreteSupperclassPrinciple) 不要构造具体的超类原则,避免维护具体的超类。16.迪米特法则 一个类只依赖其触手可得的类。二.类的设计原则 接口定义接口定义1.开闭原则Softwareentities(classes,modules,function,etc.)shouldbeopenforextension,butclosedformodification.软件实体(模块,
6、类,方法等)应该对扩展开放,对修改关闭。开闭原则(OCP:Open-ClosedPrinciple)是指在进行面向对象设计(OOD:ObjectOrientedDesign)中,设计类或其他程序单位时,应该遵循:-对扩展开放(open)-对修改关闭(closed)的设计原则。开闭原则是判断面向对象设计是否正确的最基本的原理之一。根据开闭原则,在设计一个软件系统模块(类,方法)的时候,应该可以在不修改原有的模块(修改关闭)的基础上,能扩展其功能(扩展开放)。-扩展开放:某模块的功能是可扩展的,则该模块是扩展开放的。软件系统的功能上的可扩展性要求模块是扩展开放的。-修改
7、关闭:某模块被其他模块调用,如果该模块的源代码不允许修改,则该模块修改关闭的。软件系统的功能上的稳定性,持续性要求是修改关闭的。这也是系统设计需要遵循开闭原则的原因:1)稳定性。开闭原则要求扩展功能不修改原来的代码,这可以让软件系统在变化中保持稳定。2)扩展性。开闭原则要求对扩展开放,通过扩展提供新的或改变原有的功能,让软件系统具有灵活的可扩展性。遵循开闭原则的系统设计,可以让软件系统可复用,并且易于维护。开闭原则的实现方法为了满足开闭原则的对修改关闭(closedformodification)原则以及扩展开放(openforextension)原则,应该对软
此文档下载收益归作者所有