资源描述:
《面向对象设计原则和设计模式的应用》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、第28卷第1期2007年2月华 北 水 利 水 电 学 院 学 报JournalofNorthChinaInstituteofWaterConservancyandHydroelectricPowerVol128No11Feb.2007文章编号:1002-5634(2007)01-0063-03面向对象设计原则和设计模式的应用张 宇,庄晋林(华北水利水电学院,河南郑州450011)摘 要:面向对象设计原则在基于面向对象方法开发软件系统的过程中起着重要的指导作用.它是各种设计模式背后的基本思想原则,遵守设计原则能提高软件的可维护性和可复用性.结合具有代表性的设计模式及应用实例,深入讨论了面向
2、对象设计原则.关键词:面向对象;设计原则;设计模式中图分类号:TP132.4 文献标识码:A 面向对象设计OOD(ObjectOrientedDesign)有3个最基本的设计原则:①针对接口编程,而不是针对实现编程;②优先使用对象组合,而不是类继承;③封装变化点.在此基础上可以得出几条具体的设计原则:开放封闭原则OCP(Open-ClosePrinci2ple);Liskov替换原则LSP(LiskovSubstitutionPrinci2ple);依赖倒置原则DIP(DependencyInvertionPrin2ciple);接口隔离原则ISP(InterfaceSeparatePr
3、inci2ple).采用这些设计原则可提高系统的可维护性和可复用性.设计模式是软件开发过程中对重复出现问题的可重用性解决方案[1].1 开放封闭原则OCP1.1 OCP的定义符合OCP的模块需满足2个标准:①可扩展,即“对扩展开放”.模块的功能可以被扩展,以满足新的需求;②不可更改,即“对更改封闭”.模块的源代码是不允许进行改动的.开放封闭原则是OOD的真正核心.其他的原则是它的手段和工具,是附属的原则.1.2 OCP的特点和实现OCP具有可扩展和不可修改的特点.扩展开放可以使软件系统方便地添加新的功能;修改封闭使系统已有的模块、特别是重要的抽象层模块不能被修改.因此,遵守OCP的软件系统能
4、适应不断变化的需求并保持稳定.要实现OCP需要作到抽象化.一个软件系统要区分抽象层和实现层,用户只能看到抽象层.用户通过抽象层的接口访问软件系统,该抽象层根据用户请求的具体内容决定使用系统中哪些具体的功能.当软件需要提供新的功能,只需要在软件中增加新的模块,而客户端代码和抽象层不需要改变或者只需要作很小的改变.1.3 OCP在设计模式中的体现1.3.1 简单工厂模式简单工厂模式由一个工厂类根据传入的参量决定创建出哪一种产品类的实例,是类的创建模式,涉及工厂类、抽象产品类和具体产品类.例如一个绘图软件,能处理圆形和椭圆形2种几何图形.首先定义一个“抽象产品”———Shape接口,这些几何图形类都
5、实现这个接口.再定义一个“工厂类”———ShapeCreator,来创建各种“具体产品”———几何图形类的具体实例.系统如图1所示.当客户端需要某个产品时,需向工厂类请求,然后工厂类自行判断创建哪一个产品.所以,客户端无需修改就可以接纳新的产品;抽象产品Shape接口由于处于抽象层因而十分稳定;工厂类必须知道每收稿日期:2006-06-10;修订日期:2006-08-20基金项目:河南省科技攻关项目(0524220064).作者简介:张 宇(1982-),男,河南许昌人,华北水利水电学院在读硕士研究生,主要从事面向对象技术方面的研究.64 华 北 水 利 水 电 学 院 学 报
6、 2007年2月一种产品如何创建,因而加入一个新的产品时必须修改其代码.图1 简单工厂模式实例1.3.2 工厂方法模式定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类中,工厂类不再负责所有产品的创建.因此,系统在加入新的产品时就不需要修改抽象工厂类和具体工厂类,只需要增加与新加入产品相应的具体工厂类即可.将上述绘图软件的例子用工厂方法模式实现,如图2所示.工厂类ShapeCreator抽象出来作为ShapeCreator接口,具体的创建工作由实现这个接口的类去做.当系统扩充功能添加三角形图形时,只需添加实现Shape接口的三角形新类,同时相应地创建实现ShapeCreator接口的三
7、角形实现类.因此工厂方法模式能够简单方便地实现软件系统功能扩充,并能保持系统的稳定.图2 工厂方法模式实例2 Liskov替换原则LSP2.1 LSP的定义使用指向基类(超类)的引用函数,必须能够在不知道具体派生类(子类)对象类型的情况下使用[2].换言之,如果用户使用一个基类,那么子类一定可以替代基类,用户不会察觉到基类对象和子类对象的区别.但是反过来不成立.LSP是继承复用的基石.该原则和开