面向对象设计原则和设计模式的应用_第1页
面向对象设计原则和设计模式的应用_第2页
面向对象设计原则和设计模式的应用_第3页
面向对象设计原则和设计模式的应用_第4页
面向对象设计原则和设计模式的应用_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第 28卷第 1期2007年 2月华 北 水 利 水 电 学 院 学 报Jou rna l of No rth Ch ina In stitu te of W a te r Con se rvancy and H yd roe lec tric Powe rVo l128 No11Feb. 2007文章编号 : 1002 - 5634 ( 2007 ) 01 - 0063 - 03面向对象设计原则和设计模式的应用张 宇 , 庄晋林(华北水利水电学院 ,河南 郑州 450011)摘 要 :面向对象设计原则在基于面向对象方法开发软件系统的过程中起着重要的指导作用. 它是各种设计 模式背后的基本思想

2、原则 ,遵守设计原则能提高软件的可维护性和可复用性. 结合具有代表性的设计模式及 应用实例 ,深入讨论了面向对象设计原则.关 键 词 :面向对象 ;设计原则 ;设计模式中图分类号 : TP132. 4 文献标识码 : A面向对象设计 OOD (O b jec t O rien ted D e sign )有3 个最基本的设计原则 : 针对接口编程 ,而不是针 对实现编程 ; 优先使用对象组合 ,而不是类继承 ;封装变化点. 在此基础上可以得出几条具体的设计原 则 : 开 放 封 闭 原 则 OCP ( Op en - C lo se P rinc i2p le) ; L iskov替换原则 L

3、 SP (L iskov Sub stitu tion P rinc i2p le) ; 依赖倒置原则 D IP (D ep endency Inve rtion P rin2c ip le) ;接口隔离原则 ISP ( In te rface Sep a ra te P rinc i2p le) . 采用这些设计原则可提高系统的可维护性和 可复用性.设计模式是软件开发过程中对重复出现问题的 可重用性解决方案 1 .1 开放封闭原则 OCP1. 1 O C P的定义符合 OCP的模块需满足 2 个标准 : 可扩展 , 即“对扩展开放 ”. 模块的功能可以被扩展 , 以满足 新的需求 ; 不可更

4、改 ,即“对更改封闭 ”. 模块的源 代码是不允许进行改动的. 开放封闭原则是 OOD 的 真正核心. 其他的原则是它的手段和工具 ,是附属的 原则.1. 2 O C P的特点和实现OCP具有可扩展和不可修改的特点. 扩展开放 可以使软件系统方便地添加新的功能 ; 修改封闭使系统已有的模块 、特别是重要的抽象层模块不能被修改. 因此 ,遵守 OCP 的软件系统能适应不断变化 的需求并保持稳定.要实现 OCP需要作到抽象化. 一个软件系统要区分抽象层和实现层 ,用户只能看到抽象层. 用户通 过抽象层的接口访问软件系统 ,该抽象层根据用户 请求的具体内容决定使用系统中哪些具体的功能. 当软件需要提

5、供新的功能 ,只需要在软件中增加新的模块 ,而客户端代码和抽象层不需要改变或者只 需要作很小的改变.1. 3 O C P在设计模式中的体现1. 3. 1 简单工厂模式 简单工厂模式由一个工厂类根据传入的参量决定创建出哪一种产品类的实例 ,是类的创建模式 ,涉及工厂类 、抽象产品类和具体产品类.例如一个绘图软件 ,能处理圆形和椭圆形 2 种 几何图形. 首先定义一个“抽象产品 ”Shap e 接 口 ,这些几何图形类都实现这个接口. 再定义一个 “工厂 类 ”Shap eC rea to r, 来 创 建 各 种“具 体 产 品 ”几何图形类的具体实例. 系统如图 1所示.当客户端需要某个产品时

6、 ,需向工厂类请求 ,然 后工厂类自行判断创建哪一个产品. 所以 ,客户端无 需修改就可以接纳新的产品 ; 抽象产品 Shap e 接口 由于处于抽象层因而十分稳定 ; 工厂类必须知道每收稿日期 : 2006 - 06 - 10;修订日期 : 2006 - 08 - 20基金项目 :河南省科技攻关项目 ( ) .作者简介 :张 宇 ( 1982 - ) ,男 ,河南许昌人 ,华北水利水电学院在读硕士研究生 ,主要从事面向对象技术方面的研究.64华 北 水 利 水 电 学 院 学 报 2007年 2月一种产品如何创建 ,因而加入一个新的产品时必须修改其代码.图 1简单工厂模式实例1. 3. 2

7、工厂方法模式定义一个创建产品对象的工厂接口 ,将实际创建工作推迟到子类中 ,工厂类不再负责所有产品的 创建. 因此 ,系统在加入新的产品时就不需要修改抽 象工厂类和具体工厂类 ,只需要增加与新加入产品 相应的具体工厂类即可.将上述绘图软件的例子用工厂方法模式实现 ,如图 2 所 示. 工 厂 类 Shap eC rea to r 抽 象 出 来 作 为 Shap eC rea to r接口 ,具体的创建工作由实现这个接口 的类去做. 当系统扩充功能添加三角形图形时 ,只需 添加实现 Shap e接口的三角形新类 , 同时相应地创 建实现 Shap eC rea to r接口的三角形实现类. 因

8、此工 厂方法模式能够简单方便地实现软件系统功能扩 充 ,并能保持系统的稳定.图 2工厂方法模式实例2 L iskov替换原则 L SP2. 1 L SP的定义使用指向基类 (超类 )的引用函数 ,必须能够在 不知道 具 体 派 生 类 (子 类 ) 对 象 类 型 的 情 况 下 使用 2 . 换言之 ,如果用户使用一个基类 ,那么子类一定可以替代基类 ,用户不会察觉到基类对象和子类 对象的区别. 但是反过来不成立.L SP是继承复用的基石. 该原则和开放封闭原则关系密切 ,正是子类型的可替换性 ,才使得基类型 模块无需修改就可扩充.2. 2 L SP在设计模式中的体现代理模式为其他对象提供一

9、种代理以控制对这 个对象的访问. 当客户不想或者不能直接引用一个对象时 ,代理对象在客户和被代理对象之间起中介 作用 ,去掉客户不能看到的内容和服务或者增添客 户需要的额外服务.以论坛为例 ,已注册的用户拥有发帖子的权限 ;而游客只有浏览帖子的权限. 首先实现一个抽象主 题 Fo rum ,其中定义了接口 发帖子. 真实主题和代理主题均实现该接口. 其中真实主题填入该接口方法的具体实现 ,而代理主题填入权限检查和传递 调用真实主题的实现方法. 系统结构如图 3所示.图 3代理模式实例3 依赖倒置原则 D IP抽象 不 应 依 赖 于 细 节 , 细 节 应 该 依 赖 于 抽 象 3 . 另一

10、种表述是 :要针对接口编程 ,不要针对实 现编程 1 . 依赖倒置是依赖于接口或者抽象函数和 类而不是具体的函数和类.3. 1 D IP的特点和实现D IP 的特点就是倒置. 在结构化设计中 ,高层抽 象模块依赖低层模块 ;抽象层依赖具体层. 但在实际第 28卷第 1期张 宇等 : 面向对象设计原则和设计模式的应用65 系统中 ,抽象层是相对稳定的 ,而低层代码却是经常变动的. 为了保持系统的稳定 ,应该使低层模块依赖于高层模块. 因此结构化方法是不正确的 ,依赖倒置原则就是要把这种错误的依赖关系倒转过来 ,使具体实现类依赖于抽象类和接口 4 .3. 2 D IP在设计模式中的体现以工厂方法模

11、式为例 ,将创建一个类实例的过 程封装起来 ,客户端只是得到了实例化的结果和实 例的抽象类型. 该设计模式把违反 OCP和 D IP的问 题封装在具体工厂类中 ,把问题隔离在容易控制的范围内.4 接口隔离原则 ISP多个专门的接口优于单一的总接口 3 . ISP 是 支持抽象化的可行技术. 如果没有这个原则 ,组件和5 结 语图 4 适配器模式实例类的复用率会很低且不灵活. 如果一个大的接口提供了对所有客户端的支持 ,则改变某个客户端的方 法可能会对其他方法造成影响 ,因此系统的稳定性 和灵活性就会很差. 比较好的技术就是依据 ISP 为 每个客户端提供特殊的服务接口. 这些接口被提供 服务的

12、类多继承 ,当某客户的接口需要修改时 ,其他 客户端的接口就不会被影响. 在实际应用中 ,应对系 统进行恰当的设计 ,把客户端按类别划分为若干类 , 然后对每个类创建自己的特殊接口 ,这样就避免了 系统的臃肿和混乱.ISP在设计模式中的体现 : 适配器模式是把一 个类的接口变换成客户端所期待的另一种接口 ,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作 5 . 适配器有类适配器和对象适配 器 2 种.以对象适配器为例 :比如有个遥控器类 ,它具有开关接口. 现有电视机和空调 ,分别有不同的开关接 口. 应用模式后的系统结构如图 4 所示.面向对象设计原则是基于面向对象软件系统设计

13、和开发的指导性原则. 笔者结合设计模式及其实 例 ,讨论了 4 个具体的设计原则. 通过上述的讨论可以深入地理解设计原则 ,从而能灵活运用它构建出灵活 、健壮和可重用的软件系统.参 考 文 献 1 ER ICH GAMMA , R ICHARD H ELM , RAL PH JOHN SON , and o the rs. 设计模式 : 可复用面向对象软件的基础 (英 文版 ) M . 北京 :机械工业出版社 , 2002. 2 BOB TARR. Some Object - oriented design p rincip les EB / OL . 2004 - 02 - 16. http

14、: / /www. research. umbc. edu / tarr / dp / sp r05 / cs446. htm l. 3 ROBERT C MARTIN. Design Princip les and Design Patterns EB /OL . 2000 - 08 - 03. http: / /www. objectmentor. com. 4 陈海波 ,王申康. 新编程序设计方法学 M . 杭州 : 浙江 大学出版社 , 2004. 5 阎宏. J ava与模式 M . 北京 :电子工业出版社 , 2002.A pp l ica t ion of O b jec t2O

15、 r ien ted D e s ign Pr in c ip le s an d D e s ign Pa ttern sZHAN G Yu, ZHUAN G J in2lin(No rth Ch ina In stitu te of W a te r Con se rvancy and H yd roe lec tric Powe r, Zhengzhou 450011 , Ch ina)A b stra c t: The ob jec t2o rien ted de sign p rinc ip le ha s impo rtan t lead ing func tion in deve lopm en t p roce ss of ob jec t2o rien ted softwa re sys2tem s. It is the ba sic p rinc ip le of the va riou s de sign p a tte rn, it can p rove the softwa res m a in ta inab ility and re

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论