1.2 从历史开始
小巩听完大拿的话,马上上网找了一些设计模式的资料,逐渐对设计模式的历史有了了解。对于大多数经历过软件开发的人来说,都明白这样一个道理:软件的质量在代码编写出来以前,很难进行验证,从而导致软件开发很少有按照项目进度准时完成的。同样的道理在建筑行业也存在:在房子盖起来供人们使用之前,人们很难感受到这个房子设计的好与坏,住着是否舒服,是否满足房子主人的审美观。
为了探索建筑师的建筑设计是否满足人们的需要,在1979年,一个叫Alexander(亚历山大)的建筑师,编写了一本叫《建筑的永恒之道》的书籍,这本书全面地阐述了建筑与规划的新观点,作者通过对当代建筑的研究发现:优秀的建筑中,总是存在着一些相似之处,而优秀建筑的这些特点是没有办法用名称来命名的。作者指出如果能够找到这些优秀建筑的特征,就能够找到这些建筑是采用了哪些方法,如何设计才变得优秀的,从而也就能够客观地评价一个建筑设计的好与坏。通过找出并掌握这些优秀建筑的设计方法,建筑师就可以把这些方法复制到其他的建筑设计中,从而设计出同样优秀的建筑来。
从上面的介绍可以看出,建筑行业中存在的情况和软件行业存在的情况类似。在软件行业,是否也能够从那些优秀的软件中,找到一些相同的特征、优秀的设计方法,从而使软件开发人员能够掌握这些方法,并将其应用到其他的软件开发中,从而也开发出同样优秀的软件呢?
为了探讨这个问题,从20世纪80年代开始,就有很多的软件开发人员开始了这方面的研究,其中影响最大的文献是《设计模式》一书,该书由Gamma、Johnson、Helm、Vlissides合作编写,发表于20世纪90年代中期,这4个作者也因此被称为GoF或Gang of Four。这本书总结了人类历史上软件开发的经验,给出了描述模式的一些特征,并提炼出用于指导软件设计的23种模式和一些面向对象的设计方法。