框架和庫(kù)的區(qū)別-What's the difference between a library and a framework?

來(lái)自Quora: https://www.quora.com/Whats-the-difference-between-a-library-and-a-framework的置頂答案

這兩個(gè)概念在我學(xué)習(xí)編程的過(guò)程中困擾了很久,之前搜索到的很多答案,始終覺得離自己充分理解有點(diǎn)差距,無(wú)意中在查看Quora時(shí)搜索了這個(gè)結(jié)果,發(fā)現(xiàn)解釋的比較清晰易懂,就翻譯過(guò)來(lái),如果覺得翻譯的不好,可以移步去上方的鏈接,通過(guò)自己消化是最好的


#庫(kù)

庫(kù)是指可重用的代碼片斷正如你一直在用的那種,換句話說(shuō),它并不提供任何程序鉤子讓你對(duì)它進(jìn)行擴(kuò)展。一個(gè)庫(kù)通常會(huì)專注于一個(gè)單一的功能,你可以通過(guò)API去獲取它。當(dāng)你調(diào)用一個(gè)庫(kù)函數(shù),它會(huì)執(zhí)行相關(guān)的代碼并控制返回到你自己的代碼。這個(gè)例子是關(guān)于一個(gè)優(yōu)秀的java庫(kù)(或好幾個(gè)庫(kù))叫Apache Commons的:

http://commons.apache.org/


#框架

框架是一段指定你的程序必須要遵守它結(jié)構(gòu)的代碼。一旦你選擇用某個(gè)框架開始工作,你就必須遵守框架的代碼規(guī)范和設(shè)計(jì)理念??蚣軙?huì)提供你代碼鉤子和回調(diào)函數(shù)以便你可以在上面構(gòu)建自己的程序-相反的,它也會(huì)在需要的時(shí)候調(diào)用你插入的代碼,這我們也稱之為**控制反轉(zhuǎn)**

一個(gè)框架為方便你的工作通常也會(huì)包括好幾個(gè)庫(kù)。下面就是些web框架的例子:

- Ruby on Rails:?http://rubyonrails.org/

- Tornado Web:http://www.tornadoweb.org/

- CakePHP:http://cakephp.org/


感謝閱讀,如有翻譯錯(cuò)誤,歡迎隨時(shí)指正

Ivan

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容