优秀代码的目标:
* 高效
* 健壮
* 灵活
* 无冗余
* 可读
* 可测试
面向对象的一些原则和方法
* 内聚性(cohesion):例程中操作之间联系的紧密程度
* 耦合性(coupling):两个例程之间联系的紧密程度
* 软件开发的目标:高内聚、松耦合
* 发现变化并将其封装
1. 寻找变化,并将它封装在一个单独的类中
2. 将这个类包含在另一个类
* 当一个类处理越来越多不同变化时,代码的内聚性就会变得很差。即:它处理的特殊情况越多,可理解性就越差。
* 设计的两步法:1> 抽象类(共性)—— 需要什么接口来出来这个类的所有责任?2> 派生类(可变性)——对于这个给定的特定实现,应该怎样根据给定的规约来实现它?
* 处理新需求的选择: 1> 分析瘫痪;2> 放任自流; 3> 考虑变化的设计
* 考虑变化的设计
* 原则:针对接口编程,而不是针对实现编程
* 原则:优先使用对象组合,而不是类继承
* 原则:考虑设计中什么应该是可变的
* 防止“分支蔓延”
* 一条规则,实现一次
组合起来:用模式思考
* Alexander: 设计应该从问题的一个简单陈
* 述开始,然后通过在这个陈述中加入信息,使它更加详细(也更加复杂)。一种基于模式的方法(《建筑的永恒之道》),
1. 从整体的概念性理解开始,以理解需要实现的目标
2. 找到整体中出现的模式
3. 从为其它模式创造背景的那些模式开始
4. 从背景向内:应用这些模式,找到新的模式,并重复
5. 最后,通过每次应用一个模式,改进设计,并在所创建的背景中予以实现
* 用模式思考的过程:
1. 找出模式
2. 分析和应用模式
* 按背景的创建顺序将模式排序
* 选择模式并扩展设计
* 找到其它模式
* 重复
3. 添加细节
* 考虑背景时候的一条规则:先考虑系统中需要什么,然后再去关注如何创建它们
* 背景和被使用的关系:当一个模式使用另一个模式时,被使用的模式就处于使用模式的背景中
设计模式的策略:
* 从背景设计
* 在类中封装变化
设计模式的原则:
* 开闭原则——模块、方法和类应该对扩展开放,对修改封闭。换言之,软件应该设计成不加修改缘由代码就能扩展功能。
* 依赖倒置原则——其背后的理念是在设计细节之前先创建总体概念。高层模块不应该依赖底层模块。相反,它们都应该依赖于抽象。
* 理性怀疑原则——小心过分依赖模式。概念层次的模式和模型都是真理的抽象。它们是已往经验和教训的结晶。使用它们来帮助我们思考摆在前面的问题。
共性与可变性分析(CVA):
1. 先寻找共性
2. 从这些共性创建抽象
3. 从共性的变化寻找派生
4. 看共性之间的关系如何
分析矩阵:
1. 找到某种特定情况中最重要的特性,并用矩阵将它们组织起来。用特性所表示的概念为每个特性标记。
2. 继续处理其它情况,安需要扩展这个矩阵。处理每一情况时应该独立于其它情况。
3. 用新的概念扩展该分析矩阵
4. 用行发现规则
5. 用列发现实现
6. 从这种分析中确定模式
7. 得到高层设计
对象创建和管理规则:对象应该要么构造和/或管理其它对象,要么使用对象,而不应该兼而有之。
常见的设计模式:
* Facade
* Adapter
* Strategy
* Bridge
* Abstract Factory
* Decorator
* Observer
* Template Method
* Singleton 和 Double-Checked Locking
* Object Pool
* Factory Method
设计模式解析
《设计模式解析》热门书评
-
设计模式入门最佳书籍
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