寫一個框架應(yīng)該注意什么

首先要明確出于什么目的來寫框架最岗,這個框架適用于什么場景帕胆,用來做什么的,框架的用戶對象是誰般渡,他們會怎么使用懒豹,框架由誰維護(hù)芙盘,以后怎么發(fā)展等....

1.對于設(shè)計一個框架要先有一個初步的定位,比如它是一個緩存框架脸秽、Web MVC框架儒老、IOC框架、ORM/數(shù)據(jù)訪問框架豹储、RPC框架或是一個用于Web開發(fā)的全棧式框架贷盲。

2.是否要重復(fù)造輪子淘这?除非是練手項目剥扣,一般我們是有了解決不了問題的時候才會考慮不使用既有的成熟的框架而重復(fù)造輪子的,這個時候需要列出新框架主要希望解決什么問題铝穷。有關(guān)是否應(yīng)該重復(fù)造輪子的話題討論了很多钠怯,我的建議是在把問題列清后進(jìn)行簡單的研究看看是否可以通過擴(kuò)展現(xiàn)有的框架來解決這個問題。一般而言大部分成熟的框架都有一定的擴(kuò)展和內(nèi)部組件的替換能力曙聂,可以解決大部分技術(shù)問題晦炊,但在如下情況下我們可能不得不自己去寫一個框架,比如即使通過擴(kuò)展也無法滿足技術(shù)需求宁脊、安全原因断国、需要更高的生產(chǎn)力、需要讓框架和公司內(nèi)部的流程更好地進(jìn)行適配榆苞、開源的普適框架無法滿足性能需求稳衬、二次開發(fā)的成本高于重新開發(fā)的成本等等。

2.主打輕量級坐漏?輕量級是很多人打算自己寫一個新框架的原因薄疚,但我們要明白,大部分項目在一開始的時候其實都是輕量級的赊琳,隨著框架的用戶越來越多街夭,它必定需要滿足各種奇怪的需求,在經(jīng)過了無數(shù)次迭代之后躏筏,框架的主線流程就會多很多擴(kuò)展點板丽、檢測點,這樣框架勢必變得越來越重(從框架的

3.入口到框架的工作結(jié)束的方法調(diào)用層次越來越多趁尼,勢必框架也就越來越慢)埃碱,如果你打算把框架定位于一個輕量級的框架的話,那么在今后的迭代過程中需要進(jìn)行一些權(quán)衡弱卡,在心中有堅定的輕量級的理念的同時不斷做性能測試來確蹦苏框架的輕量,否則隨著時間的發(fā)展框架可能會越來越重進(jìn)而偏離了開始的定位婶博。

4.特性瓮具?如果你打算寫一個框架,并且只有輕量級這一個理由的話,你或許應(yīng)該再為自己的框架想一些新特性名党,就像做一個產(chǎn)品一樣叹阔,如果找不出兩個以上的亮點,那么這個產(chǎn)品不太可能成功传睹,比如你的新框架可以是一個零配置的框架耳幢,可以是一個前端開發(fā)也能用的后端框架。

5.其它欧啤?一般來說框架是給程序員使用的睛藻,我們要考慮框架使用的頻度是怎么樣的,這可能決定的框架的性能需求和穩(wěn)定性需求邢隧。還有店印,需要考慮框架將來怎么發(fā)展,是希望走開源路線還是商業(yè)路線倒慧。當(dāng)然按摘,這些問題也可以留到框架有一個大致的結(jié)構(gòu)后再去考慮。

6.通過分析現(xiàn)有框架的功能纫谅,可以制定出一個新框架要實現(xiàn)的功能列表炫贤。

7.通過分析現(xiàn)有框架的問題,總結(jié)出新框架需要避免的東西和改善的地方付秕。

8.通過閱讀現(xiàn)有框架的源碼兰珍,幫助自己理清框架的主線流程為總體設(shè)計做鋪墊(后面總體設(shè)計部分會更多談到)。

9.如果能充分理解現(xiàn)有的框架盹牧,那么你就是站在巨人的肩膀上寫框架俩垃,否則很可能就是在井底造輪子。

注意:

(1):新開發(fā)一個框架的好處是沒有兼容歷史版本的包袱汰寓,但是責(zé)任也同樣重大口柳,因為如果對于一開始的定位或設(shè)計工作沒有做好的話,將來如果要對格局進(jìn)行改變就會有巨大的向前兼容的包袱(除非你的框架沒有在任何正式項目中使用)有滑,兼容意味著框架可能會越來越重跃闹,可能會越來越難看,閱讀至少一到兩個開源實現(xiàn)毛好,做好充分的調(diào)研工作可以使你避免犯大錯望艺。

(2):假設(shè)我們評估了一些主流框架后已經(jīng)很明確,我們的MVC框架是一個Java平臺的肌访、基于Servlet的輕量級的Web MVC框架找默,主要的理念是約定優(yōu)于配置,高內(nèi)聚大于低耦合吼驶,提供主流Web MVC框架的大部分功能惩激,并且易用方面有所創(chuàng)新店煞,新特性體包括:

10:起手零配置,總體上約定由于配置风钻,即使需要擴(kuò)展配置也支持通過代碼和配置文件兩種方式進(jìn)行配置顷蟀。

11:除了Servlet之外不依賴其它類庫,支持通過插件方式和諸如Spring等框架進(jìn)行整合骡技。

12:更優(yōu)化的項目結(jié)構(gòu)鸣个,不需要按照傳統(tǒng)的Java Web項目結(jié)構(gòu)那樣來分離代碼和WEB-INF,視圖可以和代碼在一起布朦,閱讀代碼更便利囤萤。

13:攔截器和框架本身更緊密,提供Action喝滞、Controller和Global三個級別的"攔截器"(或者說過濾器)阁将。

14:豐富的Action的返回值膏秫,返回的可以是視圖右遭、可以是重定向、可以是文件缤削、可以是字符串窘哈、可以是Json數(shù)據(jù),可以是Javascript代碼等等亭敢。

15:支持針對測試環(huán)境自動生成測試的視圖模型數(shù)據(jù)滚婉,以便前端和后端可以同時開發(fā)項目。

16:支持在開發(fā)的時候自動生成路由信息帅刀、模型綁定让腹、異常處理等配置的信息頁面和調(diào)試頁面,方便開發(fā)和調(diào)試扣溺。

詳見:http://www.reibang.com/p/83cb04922f17?nomobile=yes

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末骇窍,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子锥余,更是在濱河造成了極大的恐慌腹纳,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,270評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件驱犹,死亡現(xiàn)場離奇詭異嘲恍,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)雄驹,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評論 3 395
  • 文/潘曉璐 我一進(jìn)店門佃牛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人医舆,你說我怎么就攤上這事俘侠∩O眩” “怎么了?”我有些...
    開封第一講書人閱讀 165,630評論 0 356
  • 文/不壞的土叔 我叫張陵兼贡,是天一觀的道長攻冷。 經(jīng)常有香客問我,道長遍希,這世上最難降的妖魔是什么等曼? 我笑而不...
    開封第一講書人閱讀 58,906評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮凿蒜,結(jié)果婚禮上禁谦,老公的妹妹穿的比我還像新娘。我一直安慰自己废封,他們只是感情好州泊,可當(dāng)我...
    茶點故事閱讀 67,928評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著漂洋,像睡著了一般遥皂。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上刽漂,一...
    開封第一講書人閱讀 51,718評論 1 305
  • 那天演训,我揣著相機(jī)與錄音,去河邊找鬼贝咙。 笑死样悟,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的庭猩。 我是一名探鬼主播窟她,決...
    沈念sama閱讀 40,442評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼蔼水!你這毒婦竟也來了震糖?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,345評論 0 276
  • 序言:老撾萬榮一對情侶失蹤徙缴,失蹤者是張志新(化名)和其女友劉穎试伙,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體于样,經(jīng)...
    沈念sama閱讀 45,802評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡疏叨,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,984評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了穿剖。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蚤蔓。...
    茶點故事閱讀 40,117評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖糊余,靈堂內(nèi)的尸體忽然破棺而出单寂,到底是詐尸還是另有隱情,我是刑警寧澤吐辙,帶...
    沈念sama閱讀 35,810評論 5 346
  • 正文 年R本政府宣布宣决,位于F島的核電站,受9級特大地震影響尊沸,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜贤惯,卻給世界環(huán)境...
    茶點故事閱讀 41,462評論 3 331
  • 文/蒙蒙 一洼专、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧孵构,春花似錦屁商、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至精盅,卻和暖如春帽哑,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背叹俏。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留僻族,地道東北人粘驰。 一個月前我還...
    沈念sama閱讀 48,377評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像述么,于是被迫代替她去往敵國和親蝌数。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,060評論 2 355

推薦閱讀更多精彩內(nèi)容