enter image description here

  提及模式,开发人员的第一反应一定是GOF的《设计模式》。毫无疑问,这本软件领域的经典著作已经深入人心,差不多可以说是设计模式的圣经了。书中的23种模式已经成为开发者之间进行交流的术语,使用它们甚至像使用语言中的惯用法一般自然。然而,事实上,在模式领域里,还有一部伟大著作给予软件设计领域带来的影响同样的大,那就是以德国人Frank Buschmann为主要贡献者的《面向模式的软件架构》(Pattern-Oriented Software Architecture)系列。

  相对于《设计模式》而言,这一系列可以称之为是架构模式的圣经。这一套煌煌巨著一共分为五卷,其中第一卷《面向模式的软件架构:模式系统》(Pattern-Oriented Software Architecture Volume 1:A System of Patterns)的出版日期为1996年8月,最后一卷《面向模式的软件架构:模式语言》(Pattern-Oriented Software Architecture Volume 5:On Patterns and Pattern Language)则出版于2007年5月,也即是说整个系统从创作到出版跨度长达十余年的时间,单以这一点来说,本书的作者们,尤其是主要贡献者Frank Buschmann的毅力值得钦佩。

  与《设计模式》不同,本系列主要的关注点放在了架构层面。根据Richard Helm(GOF之一)对设计的划分,这些内容应属于宏观架构(macro-architecture)的部分,可以作为处于微观架构(micro-architecture)中的《设计模式》的有力补充。正因为此,阅读这一系列须得有足够的架构经验或基础,才能有所收获,而如此多卷的大部头著作,也是许多人望而却步的主要原因。

分部细说

先说即将上市的,(*^__^*) 嘻嘻……

 《面向模式的软件架构,卷3:资源管理模式》是唯一没有Buschmann参与的一本,也是最薄的一本,但书中讲解的概念却同样关键。该书主要介绍了与资源管理相关的模式,例如Lookup模式、Lazy Acquisition模式与Caching模式,以及Pooling模式等。关于资源管理的相关问题,事实上在企业应用系统中相当普遍,无论是硬件资源、网络资源还是其他外部资源,从性能、可重用性与可扩展性角度来看,都是值得关注的。这其中很多模式也得到了广泛地运用。例如Java中的JNDI就采用了类似Lookup模式的设计,Lazy Acquisition模式也在诸多框架例如Hibernate与Spring等得到运用。Leasing模式在WCF或早期的.NET Remoting中也得到了有效运用。

              enter image description here

当当网预订地址:面向模式的软件架构 卷3:资源管理模式【POSA系列畅销经典,软件架构师必备参考 】

再说四、五卷已经上市的

  第四卷虽然名为《面向模式的软件架构,卷4:分布式计算的模式语言》,但事实上可以看作是一本模式目录,因为本书涉及到的模式一共包含了114种模式,这其中还没有计算参考到的另外150多种模式。形象地说,本书好像是模式大观园,其中的风景可以说是美不胜收。然而,正是因为美丽的景点实在太多,就很容易导致风景的欣赏者开始走马观花,最后充斥在脑海中的不过是肤浅的一堆表面印象而已。粗略看来,由于要介绍的模式太多,而书的容量有限,导致许多模式的介绍只能浅尝辄止。但另一方面,本书对模式的这些描述言简意赅,背后包含的思想与意义,却又值得我们反复思索。例如,本书将Domain Object模式描述为:“将自我完备的连贯功能和基础性责任封装成定义良好的实体,通过一个或多个Explicit Interface提供功能,并隐藏内部结构和实现。”在这个描述中,所谓的“自我完备”一词就值得我们反复玩味,若能充分地体会到封装的意义与面向对象的本质,当阅读到这个词语时,定能会心微笑,犹如遇见知音一般的快乐。

              enter image description here

  《面向模式的软件架构,卷5:模式与模式语言》偏理论些,分3 部分,首先介绍了单个模式,详细阐述了过去累积的关于如何描述和应用模式的诸多见解,接着探究了模式之间的关系,从组织的角度说明了各个模式的领域,最后介绍了如何将模式和模式语言相结合。

              enter image description here

接下来说正在努力翻译的

《面向模式的软件架构,卷1:模式系统》介绍的内容更为宽泛而通用,书中讲解的各种架构模式也已得到了足够广泛的普及,例如大家耳熟能详的Layer 、MVC以及Pipes And Filters模式,都在本书进行了深入的讨论。当然,准确说来,本书涵盖的内容其实涉及到模式的各个方面。作者将模式分为三个层次,分别为架构模式、设计模式与惯用法(Idioms)。前面提及的模式就属于架构模式的类别,除了这三种模式之外,Broker模式、Presentation-Abstraction-Control模式以及Microkenel模式,对于进行软件架构活动而言,都有非常重要的参考价值。至于书中的设计模式部分,可以看做是《设计模式》的延续,有的模式表达的思想本质与GOF的《设计模式》完全一致,只是在命名上略有不同。例如Whole-Part模式与GOF的Composite模式,Publisher-Subscriber模式与GOF的Observer模式都有着千丝万缕的关系。书中还提到了《设计模式》所未曾涵盖的内容,如Forwarder-Receiver模式与Master-Slave模式,以及Client-Dispatcher-Server模式,都非常有用,尤其可以运用在并发场景或分布式场景中,这正是GOF《设计模式》较少提及的内容。

            enter image description here

  《面向模式的软件架构,卷2:并发和联网对象模式》该书的主题是用于并发和网络化对象的模式,这对于真实的大型应用系统而言非常重要,是在系统设计中最常面对的难题。本书的介绍与讲解方式完全延续了第一卷的风格,既有理论阐述,又有案例详解,同时又保持了一贯严谨的学术风格。

            enter image description here

  既然你已经选择了走上软件开发的道路,在希望提升自己的前提下,就一定做好了这样的准备。与其临渊羡鱼,不如退而结网,最重要的不是学习方法,而是执行力。即使是最美好的学习方法,如果没有执行,仍然是镜花水月。倘若是在犹疑不定中三心二意地阅读本系列,一定会半途而废;因而要想阅读本系列书籍,就必须下定决心,准备好把这一年的业余时间献给这无与伦比的不朽著作吧。顺带说一句,在阅读这一套艰深的书籍期间,可以配套阅读一些相对轻松的书籍,例如《黑客与画家》,《程序员的数学》、《思考的乐趣》或者《程序员的职业素养》之类的书籍,就当是给自己的大脑放放假吧。

本文的内容大部分由InfoQ一篇文章的节选组成,作者为张逸 。