摘要:可以對(duì)比某個(gè)類(lèi)庫(kù)如包和某個(gè)框架如加強(qiáng)理解一框架與類(lèi)庫(kù)的區(qū)別結(jié)構(gòu)上,框架內(nèi)部是高內(nèi)聚的,而類(lèi)庫(kù)內(nèi)部則是相對(duì)松散的。下圖描述了類(lèi)庫(kù)框架和應(yīng)用之間的層次關(guān)系。
可以對(duì)比某個(gè)類(lèi)庫(kù)如utils包和某個(gè)框架如mybatis加強(qiáng)理解
一、 框架與類(lèi)庫(kù)的區(qū)別
1、結(jié)構(gòu)上,框架內(nèi)部是高內(nèi)聚的,而類(lèi)庫(kù)內(nèi)部則是相對(duì)松散的。
2、框架封裝了處理流程的控制邏輯,而類(lèi)庫(kù)幾乎不涉及任何處理流程和控制邏輯。
正是由于框架對(duì)處理流程的控制邏輯進(jìn)行了封裝,才使得框架成為一個(gè)應(yīng)用的骨架。框架中的處理流程和控制邏輯需要經(jīng)過(guò)精心的設(shè)計(jì),因?yàn)樗惺褂昧嗽摽蚣艿膽?yīng)用程序都會(huì)復(fù)用該設(shè)計(jì)。
3、框架具有IOC(控制反轉(zhuǎn))能力,而類(lèi)庫(kù)沒(méi)有。
IOC,即俗稱的好萊塢模式(Don’t call us, we will call you)。對(duì)于類(lèi)庫(kù)中的元素來(lái)說(shuō),通常都是由我們的應(yīng)用來(lái)調(diào)用它;而框架具有這種能力――在適當(dāng)?shù)臅r(shí)候調(diào)用我們應(yīng)用中的邏輯。這種能力是通過(guò)框架擴(kuò)展點(diǎn)(或稱為“插槽”)來(lái)做到的――具體的應(yīng)用通過(guò)擴(kuò)展點(diǎn)注入自己的邏輯,而在適當(dāng)?shù)臅r(shí)候,框架會(huì)調(diào)用這個(gè)擴(kuò)展點(diǎn)中已注冊(cè)的邏輯。實(shí)際上,.NET中的事件(event)發(fā)布、預(yù)定機(jī)制就是IOC的一個(gè)代表性例子。
4、框架專注于特定領(lǐng)域,而類(lèi)庫(kù)卻是更通用的。
框架著力于一個(gè)特定領(lǐng)域的解決方案的完整表達(dá),而類(lèi)庫(kù)幾乎不針對(duì)任何特定領(lǐng)域。比如,本書(shū)中提到的通信框架只適用于需要在TCP/UDP基礎(chǔ)上直接構(gòu)建通信的應(yīng)用程序,而像正則表達(dá)式這樣的類(lèi)庫(kù)卻可以使用在各種不同的應(yīng)用中。
5、框架通常建立在眾多類(lèi)庫(kù)的基礎(chǔ)之上,而類(lèi)庫(kù)一般不會(huì)依賴于某框架。
二、通用框架與應(yīng)用框架
如果要對(duì)框架進(jìn)行進(jìn)一步分類(lèi),則可以根據(jù)框架針對(duì)的領(lǐng)域是否具有通用性而將它們分為通用框架(General Framework)和應(yīng)用框架(Application Framework)。通用框架可以在不同類(lèi)型的應(yīng)用中使用,而應(yīng)用框架只被使用于某一特定類(lèi)型的應(yīng)用中。、
比如,ORM框架NHibernate就是一個(gè)通用框架,該框架可以用于所有需要解決O/R映射的各種類(lèi)型的應(yīng)用中。而某個(gè)金融框架則是一個(gè)應(yīng)用框架,它僅僅被用于金融類(lèi)型的應(yīng)用中。
可以這么說(shuō),通用框架所解決的是所有類(lèi)型的應(yīng)用都關(guān)心的“普遍”問(wèn)題,而應(yīng)用框架解決的是某一特定類(lèi)型的應(yīng)用關(guān)心的問(wèn)題。所以,如果我們需要將某種類(lèi)型的應(yīng)用的核心業(yè)務(wù)邏輯流程提升到一個(gè)框架中,所得到的這個(gè)框架就是一個(gè)應(yīng)用框架。與通用框架相比,應(yīng)用框架需要了解更多目標(biāo)業(yè)務(wù)領(lǐng)域內(nèi)的領(lǐng)域知識(shí)。
在實(shí)現(xiàn)具體的應(yīng)用程序時(shí),可以采用一個(gè)應(yīng)用框架與多個(gè)通用框架相結(jié)合的方式,這樣有利于快速、高質(zhì)量的應(yīng)用程序開(kāi)發(fā)。比如,某個(gè)金融領(lǐng)域的一個(gè)應(yīng)用,可以采用金融框架作為應(yīng)用框架來(lái)解決與金融業(yè)務(wù)邏輯相關(guān)的問(wèn)題,采用Nhibernate解決數(shù)據(jù)訪問(wèn),采用ESFramework解決應(yīng)用中各分布式系統(tǒng)之間的通信。
下圖描述了類(lèi)庫(kù)、框架和應(yīng)用之間的層次關(guān)系。
框架和類(lèi)庫(kù)的區(qū)別
當(dāng)然,一個(gè)應(yīng)用也可以完全不采用任何框架,而是直接從最基礎(chǔ)的底層API(如.NET Framework)開(kāi)始構(gòu)建。對(duì)于微型的系統(tǒng),這種方式或許可行。但對(duì)于復(fù)雜大型的應(yīng)用,困難度就可想而知了。
參考:https://blog.csdn.net/qq_3264...
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/75455.html
摘要:簡(jiǎn)介注解用于修飾的方法,根據(jù)的的內(nèi)容,通過(guò)適當(dāng)?shù)霓D(zhuǎn)換為客戶端需要格式的數(shù)據(jù)并且寫(xiě)入到的數(shù)據(jù)區(qū),從而不通過(guò)視圖解析器直接將數(shù)據(jù)響應(yīng)給客戶端。并且這些解析器都實(shí)現(xiàn)了接口,在接口中有四個(gè)最為主要的接口方法。 SpringMVC 細(xì)節(jié)方面的東西很多,所以在這里做一篇簡(jiǎn)單的 SpringMVC 的筆記記錄,方便以后查看。 Spring MVC是當(dāng)前最優(yōu)秀的MVC框架,自從Spring 2.5版本...
摘要:相比于開(kāi)發(fā)人員的數(shù)量,目前框架類(lèi)庫(kù)和工具的數(shù)量似乎更多一些。本文將會(huì)討論目前最為流行的客戶端框架類(lèi)庫(kù)和工具以及它們之間的基本差異。典型的類(lèi)庫(kù)包括字符串處理日期元素事件動(dòng)畫(huà)網(wǎng)絡(luò)請(qǐng)求等功能。所以不需要明確的區(qū)分類(lèi)庫(kù)框架和工具。 相比于JavaScript開(kāi)發(fā)人員的數(shù)量,目前JavaScript框架、類(lèi)庫(kù)和工具的數(shù)量似乎更多一些。截至2017年5月,GitHub上的快速搜索顯示,有超過(guò)110...
摘要:常用的類(lèi)庫(kù)有插件把項(xiàng)目中某一部分進(jìn)行插件分裝,具備具體的業(yè)務(wù)邏輯,有針對(duì)性。常用的組件有組件框架比上面的三個(gè)都要龐大。它不僅提供了很多常用的方法,而且也可以支持一些插件的擴(kuò)展可以把一些插件集成到框架中運(yùn)行,提供了非常優(yōu)秀的代碼管理設(shè)計(jì)思想。 類(lèi)庫(kù):提供了一些真實(shí)項(xiàng)目開(kāi)發(fā)中常用的方法,這些方法做了一些完善處理,比如兼容處理、細(xì)節(jié)優(yōu)化等,方便我們開(kāi)發(fā)和維護(hù)。常用的類(lèi)庫(kù)有:JQuery、Ze...
摘要:當(dāng)前可以是身份,不需要經(jīng)過(guò)認(rèn)證或者在原先的中存在記錄。當(dāng)前必須擁有所有指定的角色時(shí),才能訪問(wèn)被該注解標(biāo)注的方法。 關(guān)于 Apache Shiro 概念基本都粘自官網(wǎng) http://shiro.apache.org/詳細(xì)中文博客 http://wiki.jikexueyuan.com/p...與SpringBoot整合 https://segmentfault.com/a/11... ...
摘要:目前已經(jīng)在大大小小多個(gè)線上產(chǎn)品中使用了,也收集了一些有效的建議好了,該看下一個(gè)最簡(jiǎn)單的組件長(zhǎng)什么樣吧免費(fèi)領(lǐng)取驗(yàn)證碼內(nèi)容安全短信發(fā)送直播點(diǎn)播體驗(yàn)包及云服務(wù)器等套餐更多網(wǎng)易技術(shù)產(chǎn)品運(yùn)營(yíng)經(jīng)驗(yàn)分享請(qǐng)?jiān)L問(wèn)網(wǎng)易云社區(qū)。文章來(lái)源網(wǎng)易云社區(qū) 本文由作者鄭海波授權(quán)網(wǎng)易云社區(qū)發(fā)布。 此文摘自regularjs的指南, 目前指南正在全面更新, 把老文檔的【接口/語(yǔ)法部分】統(tǒng)一放到了獨(dú)立的 Reference...
閱讀 3072·2021-10-11 10:58
閱讀 1989·2021-09-24 09:47
閱讀 502·2019-08-30 14:19
閱讀 1684·2019-08-30 13:58
閱讀 1444·2019-08-29 15:26
閱讀 640·2019-08-26 13:45
閱讀 2139·2019-08-26 11:53
閱讀 1772·2019-08-26 11:30