《设计模式》章节试读

当前位置:首页 > 计算机网络 > 软件工程/开发项目管理 > 设计模式章节试读

出版社:机械工业出版社
出版日期:2002-3-1
ISBN:9787111095071
作者:伽玛
页数:424页

《设计模式》的笔记-第255页 - Interpreter

Interpreter Pattern(解释器模式)是我读本书到现在最难理解的模式。可能是因为阅读过程中我一直分不清interpret(解释)和parse(解析)的区别。Interpreter Pattern是不管parse的。Interpret就是evaluate,这是求值的过程;Parse则是构建可用于求值的语法树的过程;Parse是interpret的先行步骤。
以书中的Sample Code为例:
1)给定一个布尔表达式(书中的C++示例),我要求它的最终值是真还是假——这是interpret;但是给定一行文本,我要读懂这行文本是一个什么样的布尔表达式——这是parse;只有我读懂了这个布尔表达式,我才能对它求值。
2)给定一个正则表达式(书中的Smalltalk示例),再给定一行文本,我要知道这行文本是否匹配这个正则表达式,或者再给定一个文本文件,我要找出文件中匹配该正则表达式的文本——这是interpret;但是给定一行文本,我要读懂这行文本描述的是怎样一个正则表达式——这是parse;只有我读懂了这个正则表达式,我才能用它去匹配任意文本。
所以parse是“读懂”,interpret是用读懂的东西去求值。可能有的时候,这两者的区别并不是那么清晰。
另外,Interpret Pattern和Composite Pattern的确很相似,它们之间有很紧密的联系。两者的类图甚至是一模一样的,只是类的名字有所不同。这更加印证了我读本书过程中一个越来越强的体会:设计模式的目的十分重要;理解一个设计模式时,不要光看它的类图,仅仅知道模式中有哪些类哪些方法是不够的。

《设计模式》的笔记-第151页 - Bridge

151-161 Bridge
Decouple an abstraction from its implementation so that the two can vary independently.
I want to say I like the original English book.

《设计模式》的笔记-第95页 - Abstract Factory

之前读第2章A Case Study的时候就已经基本理解了抽象工厂模式的思想。这一章对我而言比较新的内容倒是Smalltalk利用自身的类为一等公民和动态类型的特性,使用原型(Prototype)的思路来实现抽象工厂的方法。
Known Uses这一节提到,ET++使用了抽象工厂模式来实现不同窗口系统(如X Windows和SunView)之间的可移植性。不过在第2章2.6节里,作者却是使用桥接模式(Bridge Pattern)来实现同样目的的,理由是不同窗口系统之间的编程接口往往难以兼容。

《设计模式》的笔记-第126页 - Prototype

我把这一章读了两遍才感觉理解了原型模式的含义,可能是因为实践中没怎么碰到过这种模式。不过Consequences一节写道的原型模式的其中两点好处还是挺让我糊涂:Specifying new objects by varying values和Specifying new objects by varying structure。要是能就这两点举个代码上的例子就好了。可惜篇幅有限。

《设计模式》的笔记-第77页 - Chapter 2: A Case Study: Designing a Document Editor

  刚读过第2章。这一章以设计一个所见即所得的文档编辑器为例,将第3章起的很多设计模式的应用场景都串了起来。不过还是有几处让我困惑的地方:
  1. Composite Pattern完全就是在实现一个树结构。只要是需要用树来作为数据结构的地方,肯定都会采用这种设计模式。干脆直接叫Tree Pattern好了。我都读过Composite Pattern那一章了,还不太清楚这跟实现一颗普通的树有啥区别。可能这个模式强调的是,树中的所有节点对外都是一个统一的接口,每个节点内部的实现可以各自不同。
  2. Strategy Pattern和Bridge Pattern在这一章里给我感觉十分相似。2.9节小结里写道,Strategy的作用是“allow different formatting algorithms”,Bridge的作用是“allow multiple windowing platforms”。其实都可归结为“allow different XXX”。不同的视窗平台蕴含着的其实就是不同的绘制实现,2.6节的代码例子也说明了这点。实际上2.3节的Strategy UML图和2.6节的Bridge UML图也非常相似。不过在后面章节里,这两个模式却很不一样,而且Strategy被归到了行为模式,Bridge被归到了结构模式。希望读到后面时能找到答案。

《设计模式》的笔记-第327页 - TEPLATE METHOD

Template methods lead to an inverted control structure that's sometimes referred to as "the Hollywood principle," that is, "Don't call us, we'll call you" [Swe85]. This refers to how a parent class calls the operations of a subclass and not the other way around.
这里提到了 IoC 概念,可以看出这些概念在成书时还不成熟。它和 DI 有区别,意义也较模糊,看起来跟多态一样。


 设计模式下载 更多精彩书评


 

外国儿童文学,篆刻,百科,生物科学,科普,初中通用,育儿亲子,美容护肤PDF图书下载,。 零度图书网 

零度图书网 @ 2024