南寧網(wǎng)站推廣最新熱搜榜
框架(Framework)是一個(gè)框子——指其約束性,也是一個(gè)架子——指其支撐性。
IT語境中的框架,特指為解決一個(gè)開放性問題而設(shè)計(jì)的具有一定
性的支撐結(jié)構(gòu)。在此結(jié)構(gòu)上約束可以根據(jù)具體問題擴(kuò)展、安插更多的組成部分,從而更迅速和方便地構(gòu)建完整的解決問題的方案。
目前還沒看到什么有趣的個(gè)人化解釋,可能是因?yàn)橐鉀Q都復(fù)雜到設(shè)計(jì)出框架來解決的問題的人比大多數(shù)有情趣的人來說都更感覺boring吧,所以……嘿嘿!
也就是說:1)框架本身一般不完整到可以解決特定問題;2)框架天生就是為擴(kuò)展而設(shè)計(jì)的;3)框架里面可以為后續(xù)擴(kuò)展的組件提供很多輔助性、支撐性的方便易用的實(shí)用工具(utilities),也就是說框架時(shí)常配套了一些幫助解決某類問題的庫(libraries)或工具(tools)。
約束性:針對解決特定問題的軟件框架會首先定義問題的邊界,進(jìn)而將相關(guān)的軟件組件約束在這個(gè)邊界內(nèi),保持框架在解決問題方面上的內(nèi)聚性。
支撐性:框架本身是不解決什么問題的,但給了解決問題的相關(guān)組件一個(gè)插接、組合的底子,這個(gè)底子的科學(xué)性和易用性直接影響到在此之上進(jìn)行進(jìn)一步開發(fā)的科學(xué)性和方便性。
框架不一定只是解決軟件開發(fā)問題,也可以解決軟件工程問題(比如Microsoft Solution Framework)或信息系統(tǒng)等問題。
庫和框架都是一種有別于軟件、面向程序開發(fā)者的產(chǎn)品形式。正因?yàn)槿绱?#xff0c;也有很多人誤以為庫就是框架,或者認(rèn)為指定語言的庫就是框架。
庫的英語為 Library ( 簡寫 Lib ),框架的英語為 Framework。
庫是將代碼集合成的一個(gè)產(chǎn)品,供程序員調(diào)用。面向?qū)ο蟮拇a組織形式而成的庫也叫類庫。面向過程的代碼組織形式而成的庫也叫函數(shù)庫。在函數(shù)庫中的可直接使用的函數(shù)叫庫函數(shù)。開發(fā)者在使用庫的時(shí)候,只需要使用庫的一部分類或函數(shù),然后繼續(xù)實(shí)現(xiàn)自己的功能。
框架則是為解決一個(gè)(一類)問題而開發(fā)的產(chǎn)品,框架用戶一般只需要使用框架提供的類或函數(shù),即可實(shí)現(xiàn)全部功能??梢哉f,框架是庫的升級版。開發(fā)者在使用框架的時(shí)候,必須使用這個(gè)框架的全部代碼??蚣芎蛶斓谋容^可以想像為:假如我們要買一臺電腦??蚣転槲覀兲峁┝艘呀?jīng)裝好的電腦,我們只要買回來就能用,但你必須把整個(gè)電腦買回來。這樣用戶自然輕松許多,但會導(dǎo)致很多人用一樣的電腦,或你想自定義某個(gè)部件將需要修改這個(gè)框架。而庫就如自己組裝的電腦。庫為我們提供了很多部件,我們需要自己組裝,如果某個(gè)部件庫未提供,我們也可以自己做。庫的使用非常靈活,但沒有框架方便。
框架一般指的是會調(diào)用你的代碼的東東,庫一般指的是會被你調(diào)用的東東:這個(gè)也不是絕對的??蚣芎蛶於际谴a庫,你在某個(gè)庫的約束下開發(fā),那這個(gè)庫就是框架,你不受它的約束,那它就是庫。