架構模式的聖經

紫鳳發表於2013-05-17

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一篇文章的節選組成,作者為張逸 。

相關文章