設計模式 架構 類庫的區別

2021-07-01 19:18:21 字數 2864 閱讀 9487

下面我打算用乙個比方來詮釋我的理解

我模擬的例子是蓋房子,我先從設計模式說起。人類從住山洞到現在的住高樓大廈中間的居住形態經歷了無數次的演變,不同的

人用自己的智慧型詮釋了對居住環境的理解,並且由於有了文字這些經驗都被記錄下來了。現在打個比方,如果讓學計算機的你在乙個深

山老林里,什麼都不給你,你能蓋出什麼樣的房子呢?我猜肯定是什麼也蓋不出來,只能去睡山洞了,為什麼呢,因為你什麼都沒有,沒有材料

,沒有工具,甚至沒有蓋房子的知識,這時有另乙個答案,如果你足夠長壽,你也可以自己把所有蓋房子要用到的材料,工具,知識都發明出來

。這裡提到的材料,工具,知識,都是前人不斷積累而成的,我想這些當中的每一項,每一項個具體的點都是為了解決實際蓋房子過程

中遇到的各種問題而產生的。我認為這個就可以解釋程式設計當中的設計模式,當然要注意到我打的比方當中與程式設計的背景是不同的,說不通的地方

肯定是有的,但不要太鑽牛角尖。設計模式,就是一種設計思想,是解決問題的思路,當你以後遇到其他類似問題(想想,當你蓋好第乙個房子

以後,再讓你蓋乙個,你是不是就有思路了?),你可以採用類似的思路(設計模式)來解決。再說說什麼是架構,蓋房子的時候,你

再蓋之前,先要想想怎麼蓋,蓋成什麼樣子的,還有會影響你蓋房子的一些因素,例如四季的溫度,房子的朝向,房子的位置等等,總之在綜合

考慮各種因素的影響下,最終你知道這個房子應該大概是個什麼樣子了,給你紙筆你都可以把房子的大概樣子給畫出來。那麼恭喜你,你的房子

的架構確定了。在開發乙個專案的時候,當你綜合考慮各種因素後,確定的專案的樣子就是架構。那麼什麼是框架呢,還是說蓋房子,

會蓋房子的人很多,但有的人特別會蓋某種房子,例如2層小樓,於是他就創業了,專門為想蓋2層小樓的人提供方法,各種規範化的材料和工具

,這個人在創業的過程中,又不斷的發展自己的理論,於是他又能蓋高樓和歐式建築,甚至金字塔了,但你要想建那種建築,必須得用他提供的

方法,按照他的建築規範,用它的材料和工具,才能建的成,如果你用他的方法,別人的材料和工具,那這個房子就有可能壞掉。這裡,可以說

,這個人他提供給你的就是一種蓋房子的框架。同理,如果你要開發個程式,在乙個優秀開發框架的幫助下,你就可以少走很多彎路。

框架的模擬還沒完,假如你什麼框架都不用,你自己會蓋房子的基本原理,你也能把房子蓋起來,但就是沒別人蓋的好看,蓋的快,門也是手工

制的,很粗糙,而且蓋的時候還經常遇到不明白的地方,然後你到處找資料,最後弄懂了,問題才得以解決。那麼回過頭來想想,為什麼你用框

架的時候有些問題就遇不到,那是因為框架再代替你做很多事情,框架解決了怎樣蓋房子的問題,而只讓你去考慮蓋個什麼樣的房子的問題。(

這就是開發框架追求的,集中考慮業務邏輯的模擬)。框架和設計模式有什麼關係呢,正像前面所說的,框架是解決怎麼樣蓋房子,而

你仍然要解決蓋個什麼樣的房子,這實際上是將一件事分成的兩個階段,第乙個階段是聰明的人從蓋房子的過程中總結抽象出來的一種普遍使用

的理論,從而提高了蓋房子的效率,降低了蓋房子的難度。而解決如何蓋房子的問題的時候,這就像是在解決一類問題,而具體蓋房子就像是一

個例項,實際上他們在形成過程中有類似的地方,都會遇到問題,而遇到問題時就都會運用一些設計模式加以解決。只有知道怎麼蓋房

子,考慮蓋什麼樣的房子才是合理的做法,同樣,只有熟悉各種設計模式,才能研究說更多更好的蓋房子的方法。這裡面有個知識演變的過程。

正像你開發乙個專案時,你先要知道怎麼開發專案,怎麼用開發框架來開發專案(不要問為什麼用開發框架了,前面的蓋房子的論述中有提到)

,而這個開發框架在形成過程中必然要用到各種設計模式。但在開發具體的專案的時候,設計模式還是會被用到的,這一方面是框架的原因,另

一方面是設計模式本身的性質決定的。所以設計模式應該是貫穿開發過程始終的,編碼級的思想理論。這時再談到框架,我想框架就是編碼級的

方**,而架構就是專案級的設計理論。最後再談談類庫和框架的關係,大家都知道物件導向的開發框架中都有各種類庫,很多都功能

類似,又有不同的差別,這個可以打個和蓋房子有點關係的理論,比如門,有許多種,每種都是用不同的方式批量生產出來的。為了提高蓋房子

的效率,降低難度,我會從各種門中找出符合我要求的門,或者說生產這種門的方法,將這種方法納入我提出的這種蓋房子理論的體系中來,這

種生產門的方法,就是一種類庫,生產其他門的方法是其他的類庫,另外還有生產窗的,燈的,鎖的等等,等等。從中不難看出類庫和

框架的關係,可以說類庫的結合體就組成了一種框架。但之所以說是框架,而不是類庫的結合體,就是因為他們是有機的結合體,這個有機說的

是一種機制,一種思想,是框架的核心。類庫和設計模式的關係就很簡單了,類庫的實現過程中是直接應用了各種設計模式的。因此按

照從小到大的順序我們排列一下標題提到的這四個名詞,就是:設計模式,類庫,框架,架構。如果從作用來講,是個三角形或者v

字形的順序,文字描述為,類庫會用到設計模式,框架會用到類庫,架構會用到框架,架構定了,開始做專案的時候還會編寫類,還會用到設計

模式最後再延伸一點,我認為這四個詞是站在編碼角度在論述的,另乙個角度就是專案的角度,同樣也有幾個詞,從小到大依次是,方

法,過程,工程,管理。簡單說一下這四個詞背後所代表的概念。方法,例如tdd,bdd,mdd,ddd,oop/ooa,aop等等過程,例

如scrum,敏捷開發,極限開發,瀑布工程,例如需求,設計,編碼,測試,維護管理,例如生命週期,里程碑,跟蹤,報表,成本核算

,績效考核等等

上面的內容來自

看了這麼多,是不是有點暈暈的。

下面我舉個例子

框架:spring,hibernate ,jquery

架構:系統的架構,資料持久層,中間業務層,表現成等

設計模式:23種設計模式,可大可小,解決某一問題的思路

也談設計模式,架構,框架和類庫的區別

以下摘取了片段 看了廖大的 設計模式,框架,架構 感覺受益良多,下面我打算用乙個比方來詮釋我的理解 我模擬的例子是蓋房子,我先從設計模式說起。人類從住山洞到現在的住高樓大廈中間的居住形態經歷了無數次的演變,不同的人用自己的智慧型詮釋了對居住環境的理解,並且由於有了文字這些經驗都被記錄下來了。現在打個...

架構 框架 設計模式的定義和區別

一 架構 架構即軟體架構,是有關軟體整體結構與元件的抽象描述,用於指導大型軟體系統各個方面的設計。軟體體系結構是構建計算機軟體實踐的基礎,簡單來說,軟體架構是乙個系統的草圖,是一種設計方案,將客戶的不同需求抽象成為抽象元件,各個元件之間的連線則明確和相對細緻地描述元件之間的通訊。在實現階段,這些抽象...

軟體架構, 軟體框架,設計模式的區別

軟體的架構是系統的乙個草圖 闡述了各個元件之間的通訊 劃分層次 一旦系統開始詳細設計 架構藍圖就很難甚至無法更改 是由軟體架構師從無到有設計出來的。比如說,多台機器負載均衡,使用者訪問多個不同業務的前端專案,前端專案通過http介面訪問伺服器前端專案,伺服器前端專案通過介面訪問伺服器後端專案,伺服器...