做了3年Java EE开发期间虽然读了不少书,但是从来没写过读书笔记,最近计划重读《Java与模式》决定把我的对于此书的理解写下来供大家讨论。
一、 模式的起源
模式并非起源于软件行业,而是起源于建筑行业,最早关于模式的著作是建筑工程设计大师C·亚历山大(Christopher Alexander)关于城市规划和建筑设计的两本著作《建筑模式语言》(ALEX77)、《建筑的永恒之道》(ALEX79),虽然他的著作是针对建筑行业,但是其观点同样适用于软件行业。
设计模式真正引入软件行业是在1987年,那时Ward Cunningham和Kent Beck(软件重构、极限编程大师)在使用Smalltalk开发用户界面工作时使用设计模式理论知道新手开发。1993年四人帮(Gang of Four/GOF)对收集到的一些设计模式进行整理发布《Design Patterns》提出了23种基本设计模式,自此,在可复用面向对象软件的发展过程中,新的大量的设计模式不断出现。
二、 模式的要素
名字:为了方便沟通每个模式都要有一个名字
问题:描述模式要解决的问题
环境:模式使用的上下文环境
约束:对模式有影响的方面
解答:模式的实现
举例:通过例子描述模式是如何应用到环境上
结果:使用模式之后造成的 影响、变化
推理:多方面综合讨论模式
其它相关模式:此模式和其他模式的关系
已知的应用:此模式在已有系统中使用的例子
三、 软加的可维护性与可复用性
一台电视机购买后一用就是好多年,在其生命周期之中几乎没有什么维修,大多数用户都不会为家电购买额外的维修保险。但是一个软件产品维护费用确实非常之高甚至高于但是购买费用。原因如下:
1、 家电维护只是恢复家电的某种特性,软件维护出了清除错误和缺陷还有对现有功能的扩充。
2、 电视机用户不可能对一个黑白电视机进行改造使之变成彩色电视机,软件用户则不同他们很多需求从本质上改变了软件原有特性