如果让我在书中众多精彩的部分里选取一个最最耀眼的,我想不是作者对设计模式的阐述,也不是一个个精彩的示例。而是对面向对象概念的澄清,对象是什么?面向对象的好处特性是什么?
我们大多数人对上述问题的回答也是我们平时使用对象时的思想是:对象就是数据加方法,面向对象的好处就是封装和继承。封装可以隐藏数据和方法,让客户不需要了解对象的细节。继承可以轻松的实现代码复用。这些答案对么,绝对正确。但是以这些观点开始你的面向对象之旅,你会制造出一堆乱麻,面条式的代码,最后你自己都不想再碰它。这些观点的问题在于看问题的高度,这些观点过于的深入到对象的细部了。如果我们设计之初使用的是这些底层的观点作为创建对象的指导,那么他们只会成为一个个让你无法抽身的泥潭。为什么我们的工作如此痛苦,这些观点就是病根。
站在一个更高的高度看,对象是什么?对象应该是负担着责任或者具有功能的一个东西。那么封装呢?封装就是隐藏,但是不仅限于隐藏数据和方法,虽然他最终的表现是这样。封装隐藏的是对象世界中所有的东西,关联、类型、结构、继承关系……,所有对象的使用者在使用对象时不需要知道的东西。继承呢?这个是最关键的一点,代码重用只是继承的副产品,你想想我们什么时候、为了什么目的使用继承。这个呼之欲出的答案就是当我们希望对象对同一个方法表现出不同行为的时候我们使用继承。如果你需要重用,加入一个类变量引用这个类就可以了,何必继承。用专业的术语说,就是在我们需要使用多态的时候我们使用继承。
使用上述这些观念作为思考的出发点,就算没有人告诉你关于模式的事情,你也会自己发现并使用这些模式。看看使用这些观点我们能导出什么指导思想。首先关于对象,对象就是职责,设计对象就是分配职责,那么对象里面应该有什么?就是完成它承担的职责所需的数据和方法。为了避免边界效应和易于理解,我们应当为一个对象只分配一个职责。封装是隐藏的手段,为了隐藏所有的东西,我们应该面向接口编程而不是面向实现,同时为了隐藏实现的细节我们应该让具体类依赖于抽象类,这就是依赖倒置原则。同样继承的目的是多态,那么工具箱里所有能够实现多态的工具都可以使用,而不紧紧是继承。不要拿着一把锤子,就看什么都像钉子。实现多态要求我们面向接口编程,使用抽象类,使用组合、继承。同时为了避免继承类的激增和边界效应,实现多态时组合优于继承。现在已这些观念作为工作的指导思想,一定能够实现出好的程序。
如果要做面向对象编程一定要阅读本书
对“如果要做面向对象编程一定要阅读本书”的回应
《设计模式解析》热门书评
-
设计模式入门最佳书籍
8有用 0无用 Wuqifu 2011-09-03
如果你认为GOF的经典名著《设计模式》太晦涩难懂,《Head First Design Pattern》又太不技术书籍了,那么这本《设计模式解析》非常适合你!这本书每章结束时都有小结和启发性复习题,可以帮助你更好地了解自学得如何了。本书只介绍了几种比较常用简单的设计模式,因而在学习过程中会很有成就感...
-
好书一本
5有用 2无用 LeslieGu 2006-12-11
如果你向成为一名优秀的软件设计人员,这本是你的必读书。书中讲解了一些设计模式,更重要的它描述了这些模式是怎么推演出来了,还讲解了OO的本质,从设计层面上的OO。 总之,无论你是OO初学者,还是OO设计的老手...
-
一本教材性质的模式书
5有用 0无用 疯狂的菠菜 2010-05-29
可以将这本书看成"四人帮"设计模式的一个选择性展开说明, 作者认为设计模式里面的内容太晦涩, 太抽象, 学术味太重. 因此需要这么一本教材性质的模式书, 但是作者又没有全部把23种模式都拖出来论述一番, 而是按照自己的方式有选择性的进行重新的组织, 给人的感觉是前面的内容还可以,...
-
这本书应该叫pattern-driven SD或者Pattern-first SD或者Pattern
3有用 7无用 乱军中取尔三观 2008-07-31
重口味pattern书,提倡一上来就用pattern思考。不对我的胃口。我还是喜欢gof和posa。...
-
如果要做面向对象编程一定要阅读本书
3有用 1无用 对付活着 2009-03-06
如果让我在书中众多精彩的部分里选取一个最最耀眼的,我想不是作者对设计模式的阐述,也不是一个个精彩的示例。而是对面向对象概念的澄清,对象是什么?面向对象的好处特性是什么?我们大多数人对上述问题的回答也是我们平时使用对象时的思想是:对象就是数据加方法,面向对象的好处就是封装和继承。封装可以隐藏数据和方法...
书名: 设计模式解析
作者:
出版社: 人民邮电出版社
原作名: Design Patterns Explained:A New Perspective on Object-Oriented Design
副标题: A New Perspective on Object-Oriented Design
译者: 徐言声 | James R·Trott
出版年: 2006-10
页数: 296
定价: 45.00元
装帧: 16
丛书: 图灵程序设计丛书·程序员修炼系列
ISBN: 9787115150950