架構模式的聖經
提及模式,開發人員的第一反應一定是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中也得到了有效運用。
噹噹網預訂地址:面向模式的軟體架構 卷3:資源管理模式【POSA系列暢銷經典,軟體架構師必備參考 】
再說四、五卷已經上市的
第四卷雖然名為《面向模式的軟體架構,卷4:分散式計算的模式語言》,但事實上可以看作是一本模式目錄,因為本書涉及到的模式一共包含了114種模式,這其中還沒有計算參考到的另外150多種模式。形象地說,本書好像是模式大觀園,其中的風景可以說是美不勝收。然而,正是因為美麗的景點實在太多,就很容易導致風景的欣賞者開始走馬觀花,最後充斥在腦海中的不過是膚淺的一堆表面印象而已。粗略看來,由於要介紹的模式太多,而書的容量有限,導致許多模式的介紹只能淺嘗輒止。但另一方面,本書對模式的這些描述言簡意賅,背後包含的思想與意義,卻又值得我們反覆思索。例如,本書將Domain Object模式描述為:“將自我完備的連貫功能和基礎性責任封裝成定義良好的實體,通過一個或多個Explicit Interface提供功能,並隱藏內部結構和實現。”在這個描述中,所謂的“自我完備”一詞就值得我們反覆玩味,若能充分地體會到封裝的意義與物件導向的本質,當閱讀到這個詞語時,定能會心微笑,猶如遇見知音一般的快樂。
《面向模式的軟體架構,卷5:模式與模式語言》偏理論些,分3 部分,首先介紹了單個模式,詳細闡述了過去累積的關於如何描述和應用模式的諸多見解,接著探究了模式之間的關係,從組織的角度說明了各個模式的領域,最後介紹瞭如何將模式和模式語言相結合。
接下來說正在努力翻譯的
《面向模式的軟體架構,卷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《設計模式》較少提及的內容。
《面向模式的軟體架構,卷2:併發和聯網物件模式》該書的主題是用於併發和網路化物件的模式,這對於真實的大型應用系統而言非常重要,是在系統設計中最常面對的難題。本書的介紹與講解方式完全延續了第一卷的風格,既有理論闡述,又有案例詳解,同時又保持了一貫嚴謹的學術風格。
既然你已經選擇了走上軟體開發的道路,在希望提升自己的前提下,就一定做好了這樣的準備。與其臨淵羨魚,不如退而結網,最重要的不是學習方法,而是執行力。即使是最美好的學習方法,如果沒有執行,仍然是鏡花水月。倘若是在猶疑不定中三心二意地閱讀本系列,一定會半途而廢;因而要想閱讀本系列書籍,就必須下定決心,準備好把這一年的業餘時間獻給這無與倫比的不朽著作吧。順帶說一句,在閱讀這一套艱深的書籍期間,可以配套閱讀一些相對輕鬆的書籍,例如《黑客與畫家》,《程式設計師的數學》、《思考的樂趣》或者《程式設計師的職業素養》之類的書籍,就當是給自己的大腦放放假吧。
本文的內容大部分由InfoQ一篇文章的節選組成,作者為張逸 。
相關文章
- 聖經
- 極簡架構模式-MVC模式架構模式MVC
- 軟體架構模式之微服務架構架構模式微服務
- 聊聊admin服務的架構模式架構模式
- Web 框架的架構模式探討Web框架架構模式
- 大型網站技術架構(三)--架構模式網站架構模式
- go 聖經---PDFGo
- MVP應用架構模式MVP應用架構模式
- 架構設計思想-微服務架構設計模式架構微服務設計模式
- 極簡架構模式-依賴注入模式架構模式依賴注入
- 極簡架構模式-業務代表模式架構模式
- 極簡架構模式-傳輸物件模式架構模式物件
- 企業應用架構的基本模式之入口模式應用架構模式
- 極簡架構模式-前端控制器模式架構模式前端
- 極簡架構模式-組合實體模式架構模式
- iOS開發-MVP架構模式iOSMVP架構模式
- Serverless 架構模式及演進Server架構模式
- 死星模式、死星架構模式架構
- 認知篇:CQRS架構模式的本質架構模式
- 不可不知的軟體架構模式架構模式
- 架構師對MVC設計模式的理解架構MVC設計模式
- 梳理公司的組織架構 — 組合模式架構模式
- 10種常見的軟體架構模式架構模式
- mysql8.0 主從架構模式【0到1架構系列】MySql架構模式
- 大型網站技術架構——2. 網站架構模式網站架構模式
- 極簡架構模式-服務定位器模式架構模式
- 極簡架構模式-攔截過濾器模式架構模式過濾器
- 極簡架構模式-資料訪問物件模式架構模式物件
- 通過例子手撕架構模式架構模式
- 極簡架構模式-控制反轉架構模式
- 架構師之路—理解設計模式架構設計模式
- 選用Vue做MVC架構模式VueMVC架構模式
- 大型網站架構模式筆記網站架構模式筆記
- ftpit聖誕節OpenVZ架構月付1.5美元VPS註冊教程FTP架構
- 阿里架構師,講述基於微服務的軟體架構模式(附資料)阿里架構微服務模式
- Js繼承之聖盃模式JS繼承模式
- Deep Crossing模型——經典的深度學習架構ROS模型深度學習架構
- 聖誕節AlphaVPS年付10歐元OpenVZ架構VPS註冊教程架構
- 重構 JAVA 聊天室 —— CS 模式的簡單架構實現Java模式架構