1. 程式人生 > >連載01:軟件體系設計新方向:數學抽象、設計模式、系統架構與方案設計(簡化版)(袁曉河著)

連載01:軟件體系設計新方向:數學抽象、設計模式、系統架構與方案設計(簡化版)(袁曉河著)

識字 架構 margin 簡化 ××× 實例 如果 基本 系統架構

軟件設計公理化

現在是一個知識過剩的時代,培養獨立思考的能力遠比盲目看書更重要。 ---來自網絡名言

如今設計模式就像蝗蟲一樣鋪天蓋地,任何一位時下的“大牛”都會搗騰一大堆設計模式的調調,但“災難深重”的我們,卻天天把眉毛和胡子愁在一起。我常常被迷惑,被鼓動,但是卻難於深入理解什麽是設計模式。設計模式是什麽?是抽象化的精粹,還是設計的哲學。也許是被糊弄久了,也許是在某天,也許是更長的時間裏,當我苦苦思索的時候,我猛然發現,哈!為什麽我不能走實證的道路,不去想那虛無縹緲的抽象意義,而是先從設計模式的模樣開始分析,就像金庸老先生的《俠客行》中的石破天,別人都在忙活著分析詩句和註解,他由於不識字,就只能看圖玩。看著、看著就入了道,最後功力大增,練就了一身的絕學。雖然我無法達到身懷絕學,但是從結構的角度分析設計模式,的確讓人醍醐灌頂。所以也希望將我的經驗與所有“有緣人”進行分享。

傷不起的設計模式

在過去那些汗牛充棟的設計模式書籍文章中,大多都喜歡從意圖和動機開始入手,然後再告訴你,這裏有一個挺牛的方法,這個方法就是xxx設計模式,然後再如清風拂面一般的教導大家,這個設計模式有什麽好處,為什麽牛的一塌糊塗,但是又要註意,不要玩火過度,“罌粟少量是藥,多了就是×××”,然後可以兜售到好多好多地方,可謂是娓娓道來,滴水不漏。但是,還是但是,當我狂亂驚訝過後,我怎麽也無法留下深刻的印象,而且還常常把這些所謂的“招式”名堂搞混,雖然有長輩諄諄教導下才能澄清的了“馬和騾子”的區別,然而,不過依然被歸於了“偽牛人”一列,談談設計模式可以,但是要實施就漏了馬腳。

後來想想原因,主要是

GOF(四人幫)的那本葵花寶典式之《設計模式》太經典了,經典到連程序猿菜鳥都知道。此書可謂開天辟地,把不該告訴你的都告訴你了,都快20年了,還這樣有嚼勁。當後面鋪天蓋地的設計模式運應而生以後,有設計模式也有反設計模式,有事實有依據,把設計模式推向高潮。

在《設計模式》中,作者們通過大量的實踐中的眾多的經驗進行統一總結、分析以及驗證並形成了創建型、結構型、行為型等23個基本的設計模式,並在書中給出了意圖、適用性以及實例等。後來在行業的不斷發展下,總結出更多讓人眼花繚亂的設計模式以及架構模式等。總之,這些手法皆屬同一門派,采用的思維方式大抵是一致的。

但是,我感覺這裏的確缺少了很多東西,按照西方人的思維習慣,應該是實證更濃厚一些,是喜歡從分析入手的,任何理論都先要從公理開始,然後步步推導。但是設計模式從叫響到現在更接近東方人的思維方式,那就是從經驗而來,從經驗而來,先給出這個現象,然後再從我們的已有經驗中去找尋答案,所謂設計沒有好壞之分,只有美醜之分。所以,設計模式被稱為不是發明,而是發現設計模式。這點甚好,因為我本東方人,這樣的思維方式很容易就習慣了,多爽的事!但是,還是但是,這只是一只腳在走路。如果我們只能從需求和經驗而來的“自上而下”的方式,一定需要一個“自下而上”的方式進行補充,這種方式就是我們需要暫時脫離這些模糊的經驗,先拆開這些設計模式進行分析。茍且讓我從我非擅長的“公理化”開始進行分拆,拋棄一切具體含義,從公理化的道路去看看,去嘗試嘗試。


連載01:軟件體系設計新方向:數學抽象、設計模式、系統架構與方案設計(簡化版)(袁曉河著)