<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      請(qǐng)討論分層,而不是三層

      討論完了語(yǔ)言又討論培訓(xùn),討論完了培訓(xùn)又討論分層,這些話(huà)題似乎永遠(yuǎn)都討論不完。討論總是有益的,但是如果討論的命題本身就有問(wèn)題的話(huà),可能副作用就比益處來(lái)的更大了。

      三層 = 表現(xiàn)層+業(yè)務(wù)邏輯層+數(shù)據(jù)訪問(wèn)層 ?

      是不是所有系統(tǒng)一定要分成三層,是不是所有三層的系統(tǒng)都一定是這三層,如果我寫(xiě)一個(gè)不需要數(shù)據(jù)存儲(chǔ)的應(yīng)用呢,如果我寫(xiě)一個(gè)沒(méi)有界面的程序(庫(kù))呢?

      為什么一提到三層就是這三層?因?yàn)樗械挠懻摱际腔凇爸行⌒蚥/s或c/s應(yīng)用系統(tǒng)",因?yàn)檫@樣的系統(tǒng)現(xiàn)在最常見(jiàn),也是做的最多的。但是我們不能僅僅將眼光局限在這個(gè)領(lǐng)域里,而是應(yīng)該放的更長(zhǎng)遠(yuǎn),分層是一個(gè)普遍使用的概念,不能僅僅局限于“三”層,也不能僅僅局限于"UI+BL+DAL"。三層只是分層的一個(gè)特例,UI+BL+DAL的組合也只是三層系統(tǒng)的一個(gè)特例,理解了特例不代表理解了分層;而理解了分層自然就能理解這個(gè)特例了。因此請(qǐng)不要在討論三層了,直接討論分層吧,這樣可以少一些誤解,少一些爭(zhēng)論。例如,那些說(shuō)三層(UI+BL+DAL)不好的人,不會(huì)因此而否定分層,他仍然可以分兩層或者一層,而不是拒絕分層;討論也會(huì)僅僅限于此三層是否好用,是應(yīng)該改變之中的某一層還是改變層次的數(shù)目,什么時(shí)候應(yīng)該分三層,什么時(shí)候應(yīng)該分兩層。

      再來(lái)說(shuō)說(shuō)分層的優(yōu)缺點(diǎn),任何東西都不是完美的,它只能解決某些特定的問(wèn)題。解決不了所有的問(wèn)題不是它的錯(cuò),使用它來(lái)解決它不善于解決的問(wèn)題絕對(duì)是你的錯(cuò)。

      我喜歡分層的原因是:分層可以將底層操作包裝,使你在任何一層工作時(shí),可以只考慮下面的一層,而無(wú)需考慮更下面的所有層的細(xì)節(jié),甚至是一共有多少層。這是一個(gè)抽象的機(jī)制,這是一個(gè)名字的集合,你會(huì)使用”GetAllUsers"而不是"select * from users order by id"來(lái)思考問(wèn)題,你會(huì)使用"獲取購(gòu)物清單”而不是“拿到一張寫(xiě)滿(mǎn)了我所買(mǎi)商品以及他們價(jià)錢(qián)的列表”,如果沒(méi)有分層可能你在寫(xiě)代碼的時(shí)候還要考慮某個(gè)電子是如何將內(nèi)存中的一個(gè)二進(jìn)制位設(shè)置成“1"。 我曾經(jīng)遇到過(guò)一個(gè)系統(tǒng),這個(gè)系統(tǒng)很小,大概也就幾千行代碼,它使用VB來(lái)訪問(wèn)一個(gè).ini的配置文件、一個(gè)數(shù)據(jù)庫(kù)和一個(gè)execl模版。它的主要功能就是根據(jù).ini的配置信息,從數(shù)據(jù)庫(kù)中獲取某些數(shù)據(jù),放到模版的某個(gè)cell中。代碼雖短但是非常難懂,它每執(zhí)行一個(gè)操作都要調(diào)用幾乎相同的3-5行代碼來(lái)讀取.ini文件,這些代碼唯一不同的地方就是要讀取的鍵值,以及返回結(jié)果的類(lèi)型(強(qiáng)制類(lèi)型轉(zhuǎn)換)。看到這里大家應(yīng)該很容易看出來(lái),只要提取一個(gè)函數(shù)就行了。是的,僅僅是提取一個(gè)函數(shù),就使得代碼的清晰程度大幅增加,同時(shí)減少了重復(fù)代碼。這個(gè)函數(shù)其實(shí)就是一個(gè)“數(shù)據(jù)訪問(wèn)層”,它將對(duì).ini文件的訪問(wèn)細(xì)節(jié)包裝起來(lái),任何使用它的代碼都無(wú)需知道實(shí)現(xiàn)細(xì)節(jié),只要知道調(diào)用這個(gè)“GetValueFromConfig(key)”就可以得到自己想要的東西。這樣,你就擺脫了每次考慮如何訪問(wèn)配置文件的細(xì)節(jié),可以專(zhuān)注于更高層的邏輯了。這里順便說(shuō)一下,很多人認(rèn)為“數(shù)據(jù)訪問(wèn)層”的作用是可以替換數(shù)據(jù)庫(kù),實(shí)際上這種情況在框架以外的程序中并不經(jīng)常發(fā)生。在應(yīng)用程序中,將對(duì)數(shù)據(jù)的訪問(wèn)抽象出來(lái)才是更常見(jiàn)的動(dòng)機(jī)。

      當(dāng)然就像前面說(shuō)的,分層也有它自己的問(wèn)題:首先是級(jí)聯(lián)修改,典型的例子是在網(wǎng)站中需要添加顯示一個(gè)字段,就需要修改每一個(gè)層。 另一個(gè)問(wèn)題是性能,層次越多性能受到的影響就越大。不過(guò)這些缺點(diǎn)不是你不用分層的理由。級(jí)聯(lián)修改可能是由于沒(méi)有定義好層次間的接口造成的,也可能是需求變更造成的。如果是正常的需求變更,造成級(jí)聯(lián)修改的次數(shù)是有限的,并不會(huì)蓋過(guò)分層所帶來(lái)的好處;如果級(jí)聯(lián)修改過(guò)于頻繁,則可能是需求太不穩(wěn)定或者架構(gòu)設(shè)計(jì)有問(wèn)題。至于性能問(wèn)題,現(xiàn)在計(jì)算機(jī)的速度越來(lái)越快了,系統(tǒng)的瓶頸通常都在磁盤(pán)IO或者網(wǎng)絡(luò)傳輸,分層造成的CPU和內(nèi)存消耗在絕大多數(shù)系統(tǒng)中不是主要問(wèn)題,因此除非是資源有限且性能要求很高的程序,一般來(lái)說(shuō)這也不是一個(gè)問(wèn)題。

      那么分多少層合適,每層的職責(zé)又是什么?

      分多少層取決于應(yīng)用的復(fù)雜度以及特點(diǎn),如果你的系統(tǒng)本身不復(fù)雜而又分了很多的層,必然有些層中沒(méi)什么邏輯,那么這些簡(jiǎn)單的層所帶來(lái)的煩惱就要大于好處了; 如果分的層過(guò)少,就會(huì)在一個(gè)層中混雜不同抽象程度的概念,使你的思維總在高層于底層之間跳躍,造成邏輯的代碼的混亂。分層沒(méi)有規(guī)范,任何分層系統(tǒng)都要在實(shí)踐中接受考驗(yàn),三層是一個(gè)好的開(kāi)始,但并不是終結(jié),當(dāng)你覺(jué)得三層不合適的時(shí)候,改變吧,相信你的直覺(jué),而不是某些所謂的“權(quán)威”說(shuō)的“三層好,一定要用,兩層是邪惡的,sp是邪惡的……”。或許有一天你會(huì)同意三層確實(shí)比兩層好,但是在你還不知道為什么三層好的時(shí)候,乖乖的使用兩層(或者其他什么你認(rèn)為好的東西),遠(yuǎn)遠(yuǎn)比懵懵懂懂的誤用三層,然后誤解三層,最后遠(yuǎn)離三層要好的多。

       

      posted @ 2009-05-25 23:20  Nick Wang (懶人王)  閱讀(4289)  評(píng)論(25)    收藏  舉報(bào)
      主站蜘蛛池模板: 中文国产人精品久久蜜桃| 亚洲精品日韩在线观看| 国产亚洲一二三区精品| 欧美熟妇乱子伦XX视频 | 国产激情av一区二区三区| 成人乱码一区二区三区四区| 人妻少妇无码精品专区| 丰满人妻一区二区三区无码AV| 国产亚洲精品第一综合另类| 久久综合伊人77777| 免费网站看sm调教视频| 亚洲国产精品热久久一区| 精品人妻日韩中文字幕| 亚洲www永久成人网站| 91精品国产老熟女在线| 中文字幕亚洲制服在线看| 欧美性猛交xxxx乱大交丰满| 九九热免费在线播放视频| 久久这里只有精品好国产| 国产精品成人av电影不卡| 亚洲日韩亚洲另类激情文学| 国产成人亚洲欧美二区综合| 亚洲综合色成在线播放| 宜君县| 中文文字幕文字幕亚洲色| 国产成人精品a视频| 色老板精品无码免费视频| 一区二区中文字幕av| 国产粉嫩系列一区二区三| 国产乱妇乱子视频在播放| 亚洲国产一区二区三区亚瑟| 日韩少妇人妻vs中文字幕| 日本高清一区免费中文视频| 国产精品自拍视频免费看| 国产综合色精品一区二区三区| 动漫av网站免费观看| 人妻出轨av中文字幕| 亚洲精品国偷拍自产在线观看蜜臀| 美女又黄又免费的视频| 少妇人妻偷人精品系列| 日韩中文字幕综合第二页|