2007年1月30日星期二

牵模式的手——《模式的乐趣》阅读笔记

很显然,从一开始我并未想到这样薄薄的一本书竟然配我走过两个多月的时光,而且让我时时激起购买它的欲望(现在我还是遵循"书非借不能读"的古训)。想起那天和Decland谈起《DesignPattern》,他感慨于该书Scholar气息太浓,Sample太少。现在我也有同感了。的确《DesignPattern》太过于严谨,对于OO的新手来说缺少亲近它的欲望。而这本小册子,则很能成为阅读《DesignPattern》的辅助读物,像筵席外的一份零食。
"简而言之,模式也是世界上出现的一种事物,其规则告诉我们如何创建这种事物,以及何时必须创建它。它既是过程,也是事物;既是对存在的事物的描述,也是对创建这种事物的过程的描述。——Alexander[1979]"
"对于软件来说,算法、数据结构是基本构件,模式也是,甚至更像是定义算法和数据结构的模具"
"模式的一个主要目标就是,以一种别人容易接受的方式,捕捉那些重复出现的问题的解决方案(以及可以使用这些解决方案的约束和场景)",从语义表达角度,模式所能传达的信息更多,更精密。这也是其难于掌握的原因。像情侣间一个细微的眼神,如果没有日日夜夜的厮守,是无法达到的。
"每一种模式都应该是对其他模式的补充。每增加一种模式都应该让系统更加强壮。这样的系统可以不断发展,且不会增加维护的压力,也不会降低整个系统的性能——系统增大后通常会导致这种结果。我们希望创建一个各部分互为补充的框架,希望每一个新增的部分都能让其他部分更加强壮"
"模式不会存在于真空中。实际上,模式不仅依赖于其自身,而且依赖于整个体系结构中所有其他模式。每种模式本身都由相互依赖的其他成分组成"。模式更像软件的社会化属性,在良好模式设计的系统中,众多简单对象合同协作,完成复杂任务。可见,模式可以由人的管理模式进行映射。善于了解模式的人一定也是善于发现社会协同机制的人。
"没有经验的开发人员常常不理解设计与实现之间的区别,所以这些习惯语法就成了他们表达设计思想的唯一途径""如果你唯一的工具是锤子,你就会把所有的东西都当作钉子"
"模式是不依赖于编程语言的(与之相反的习惯语法是编程语言特有的)。从某种程度上讲,模式构成了一种语言,它比编程语言更进了一步,使开发人员可以彼此交流设计思想。……模式本身超越了任何具体的语言,这绝不是要忽视选择编程语言的重要性,只是希望你认识到,编程语言不应该限制我们提供有价值的技术的能力"
"当一个人从事设计活动时,他的行为完全受当时他心中已有模式语言的支配。当然,随着经验的增长,每个人心目中的模式语言都会随着时间而变化。但是,在必须做出设计决定的那个特定时刻,他要完全依赖在此之前他已经积累的模式语言。不论他的设计多么小或多么复杂,他的设计活动将完全受他心目中已有的模式以及他将这些模式组合新的设计的能力的支配——Alexander[1979]"

0 评论: