OO设计模式和设计原则.doc

OO设计模式和设计原则.doc

ID:55689715

大小:59.50 KB

页数:7页

时间:2020-05-25

OO设计模式和设计原则.doc_第1页
OO设计模式和设计原则.doc_第2页
OO设计模式和设计原则.doc_第3页
OO设计模式和设计原则.doc_第4页
OO设计模式和设计原则.doc_第5页
资源描述:

《OO设计模式和设计原则.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、00设计模式和设计原则1.1设计正在“腐烂"的征兆(SymptomsofRottingDesign)有四个主要的征兆告诉我们该软件设计正在“腐烂”中。它们并不是互相独立的,而是互相关联,它们是过于僵硬、过于脆弱、不可重用性和粘滞性过高。1.过于僵硬RigidityRigidity致使软件难以更改,每一个改动都会造成一连串的互相依靠的模块的改动,项目经理不敢改动,因为他永远也不知道一个改动何时才能完成。2.过于脆弱FragilityFragility致使当软件改动时,系统会在许多地方出错。并且错误经常会发生在概念上与改动的地方没有联系

2、的模块中。这样的软件无法维护,每一次维护都使软件变得更加难以维护。(恶性循环)3.不可重用性immobilityimmobility致使我们不能重用在其它项目中、或本项目中其它位置中的软件。工程师发现将他想重用的部分分离出来的工作量和风险太大,足以抵消他重用的积极性,因此软件用重写代替了重用。4.粘滞性过高viscosityviscosity有两种形式:设计的viscosity和环境的viscosity.当需要进行改动时,工程师通常发现有不止一个方法可以达到目的。但是这些方法中,一些会保留原有的设计不变,而另外一些则不会(也就是说,

3、这些人是hacks)。一个设计如果使工程师作错比作对容易得多,那么这个设计的viscosity就会很高。环境的viscosity高是指开发环境速度很慢且效率很低。2面向对象的类设计原则2.1开放关闭原则TheOpenClosedPrinciple(OCP)Amoduleshouldbeopenforextensionbutclosedformodification.——个模块应该只在扩展的时候被打开(暴露模块内部),在修改的时候是关闭的(模块是黑盒子)。在所有的面向对象设计原则中,这一条最重要。该原则是说:我们应该能够不用修改模块的

4、源代码,就能更改模块的行为。2.1.1动态多态性(DynamicPolymorphism)2.1.2静态多态性(StaticPolymorphism)另外一种使用OCP的技术就是使用模板或范型,如Listing2-3.LogOn函数不用修改代码就可以扩展出多种类型的modem.2.1.3OCP的体系结构目标(ArchitecturalGoalsoftheOCP)通过遵照OCP应用这些技术,我们能创建不用更改内部代码就可以被扩展的模块。这就是说,在将来我们给模块增添新功能是,只要增加新的代码,而不用更改原先的代码。,共17页使软件完全

5、符合OCP可能是很难的,但即使只是部分符合OCP,整个软件的结构性能也会有很大的提高。我们应该记住,让变化不要波及己经正常工作的代码总是好的。2.2Liskov替换原则TheUskovSubstitutionPrinciple(LSP)Subclassesshouldbesubstitutablefortheirbaseclasses.子类应该可以替换其基类。如下图2・14所示。Derived类应该能替换其Base类。也就是说,Base基类的一个用户User如果被传递给一个Devrived类而不是Base类作为参数,也能正常的工作。

6、1.2依赖性倒置原则TheDependencyInversionPrinciple(DIP)1DependuponAbstractions.Donotdependuponconcretions.依赖才由象,不要依赖具体。如果说OCP声明了00体系结构的目的,DIP则阐述了其主要机制。依赖性倒置的策略就是要依赖接口、或抽象函数、或抽象类,而不是依赖于具体的函数和类。这条原则就是支持组件设计、COM、CORBA、EJB等等的背后力量。1.2.1依赖抽象DependinguponAbstractions.实现该原则十分简单。设计中的每一个

7、依赖都应该是接口、抽象类,不要依赖任何一个具体类。显然这样的限制比较严峻,但是我们应该尽可能的遵守这条原则。原因很简单,具体的模块变化太多,抽象的则变化少得多。而且,抽象是“钗链“点,在这些位置,设计可以弯曲或者扩展,而不用进行更改(OCP)。1.3接口隔离原则TheInterfaceSegregationPrinciple(ISP)"Manyclientspecificinterfacesarebetterthanonegeneralpurposeinterface多个和客户相关的接口要好于一个通用接口。ISP是另一条在底层支持组

8、件如COM技术的原则。没有它,组件和类的易用性和重用性都会大打折扣。该原则的实质很简单:如果一个类有几个使用者,与其让这个类载入所有使用者需要使用的所有方法,还不如为每一个使用者创建一个特定的接口,并让该类分别实现这些接口。3包体系结

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

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

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