您所在的位置: 首页 > 读书频道 > 设计开发 > 其它开发 >

开放-关闭原则

http://book.51cto.com  2007-12-04 13:18  [美] 弗里曼(Freeman , E.)等著 蔡学镛 译  中国电力出版社  我要评论(0)
  • 摘要:《Head First 设计模式(中文版)》第三章介绍了Decorator设计模式,可以称为“给爱用继承的人一个全新的设计眼界”。本文是开放-关闭原则。
  • 标签:设计原则  技巧  装饰  Head First 设计模式

开放-关闭原则

此刻,蚱蜢面临最重要的设计原则之一:

thereareno
DumbQuestions

问: 对扩展开放,对修改关闭?听起来很矛盾。设计如何兼顾两者?
答: 这是一个很好的问题。乍听之下, 的确感到矛盾, 毕竟, 越难修改的事物, 就越难以扩展, 不是吗?

但是, 有一些聪明的OO 技巧, 允许系统在不修改代码的情况下, 进行功能扩展。想想观察者模式( 在第2章)…… 通过加入新的观察者, 我们可以在任何时候扩展Subject( 主题), 而且不需向主题中添加代码。以后, 你还会陆续看到更多的扩展行为的其他OO 设计技巧。

问: 好吧!我了解观察者(Observ -able), 但是该如何将某件东西设计成可以扩展,又禁止修改?

答: 许多模式是长期经验的实证, 可通过提供扩展的方法来保护代码免于被修改。在本章, 将看到使用装饰者模式的一个好例子, 完全遵循开放-关闭原则。

问: 我如何让设计的每个部分都遵循开放-关闭原则?

答: 通常, 你办不到。要让OO 设计同时具备开放性和关闭性, 又不修改现有的代码, 需要花费许多时间和努力。一般来说, 我们实在没有闲工夫把设计的每个部分都这么设计( 而且, 就算做得到, 也可能只是一种浪费) 。遵循开放-关闭原则, 通常会引入新的抽象层次, 增加代码的复杂度。你需要把注意力集中在设计中最有可能改变的地方, 然后应用开放-关闭原则。

问: 我怎么知道,哪些地方的改变是更重要呢?

答: 这牵涉到设计OO 系统的经验, 和对你工作领域的了解。多看一些其他的例子可以帮你学习如何辨别设计中的变化区。

虽然似乎有点矛盾, 但是的确有一些技术可以允许在不直接修改代码的情况下对其进行扩展。
在选择需要被扩展的代码部分时要小心。每个地方都采用开放-关闭原则, 是一种浪费, 也没必要, 还会导致代码变得复杂且难以理解。

【责任编辑:雪花 TEL:(010)68476606】

回书目   上一节   下一节
J2EE实用技巧大全
Windows Server 2003技巧和应用
ADO.NET实用技巧专题
杀毒软件优化和使用技巧
Windows系统使用技巧
 
 验证码: (点击刷新验证码)   匿名发表
  • 网络工程师考试案例动手实验营

  • 作者:郭春柱
  • 本书依据2009年版《网络工程师考试大纲》的考核要求,深入研究了历年网络工程师考试试题的命题风格和试题结构,对考查的知识点..
Copyright©2005-2008 51CTO.COM 版权所有