日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

三层架构(★)

發布時間:2024/9/21 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 三层架构(★) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉載自:http://blog.csdn.net/hanxuemin12345/article/details/8544957

三層架構已經學了一段時間,一直想做一個比較完整、比較完美的總結。但是左思右想,不知道如何下筆。都說萬事開頭難嘛,今天整理了一下凌亂的思路,哎,還是沒整理好,想到哪就說到哪吧。

?

初學者很不理解:

1,什么是三層?

2,為什么使用三層?

3,三層與以往使用的兩層相比有什么不同?它的優勢在哪里?

4,如何學好三層?如何應用三層?

……

這篇博客里我會給大家一一解釋一下,略懂皮毛忘大家見諒!!!

米老師一直強調:讓學習和生活結合,把學習和生活聯系,這樣的學習才叫會學習,會生活。

對于三層我左思右想,如何與實際相聯系。好嘛,昨晚突然有了“靈感”。還記得大話設計模式里第23章大鳥和小菜吃羊肉串的故事——由在小攤吃到飯店吃引來的一個命令模式(當然今天不是研究命令模式)。服務員、廚師、采購員。

這不就是個典型的三層架構嗎???(?o??)啊!哈哈(這個后面再做解釋)

?

?

先了解:

?

1,什么是三層?

UI(表現層):主要是指用戶交互的界面。用于接收用戶輸入的數據和顯示處理后用戶需要的數據。

?

BLL:(業務邏輯層):UI層和DAL層之間的橋梁實現業務邏輯。業務邏輯具體包含:驗證、計算、業務規則等等。

?

DAL:(數據訪問層):與數據庫打交道。主要實現對數據的增、刪、改、查。將存儲在數據庫中的數據提交給業務層,同時將業務層處理的數據保存到數據庫。(當然這些操作都是基于UI層的。用戶的需求反映給界面(UI),UI反映給BLLBLL反映給DALDAL進行數據的操作,操作后再一一返回,直到將用戶所需數據反饋給用戶)

每一層都各負其責,那么該如何將三層聯系起來呢?

1>單項引用(見下圖)

2>這時候實體層(Entity)來了。(注:當然,實體層的作用不止這些)

?

Entity(實體層):它不屬于三層中的任何一層,但是它是必不可少的一層。

?

Entity在三層架構中的作用:

1,實現面向對象思想中的"封裝";

2,貫穿于三層,在三層之間傳遞數據;

注:確切的說實體層貫穿于三層之間,來連接三層)

3,對于初學者來說,可以這樣理解:每張數據表對應一個實體,即每個數據表中的字段對應實體中的屬性(注:當然,事實上不是這樣。為什么?1>,可能我們需要的實體在數據表對應的實體中并不存在;2>,我們完全可以將所有數據表中的所有字段都放在一個實體里)

4,每一層(UI>BLL>DAL)之間的數據傳遞(單向)是靠變量或實體作為參數來傳遞的,這樣就構造了三層之間的聯系,完成了功能的實現。

但是對于大量的數據來說,用變量做參數有些復雜,因為參數量太多,容易搞混。比如:我要把員工信息傳遞到下層,信息包括:員工號、姓名、年齡、性別、工資....用變量做參數的話,那么我們的方法中的參數就會很多,極有可能在使用時,將參數匹配搞混。這時候,如果用實體做參數,就會很方便,不用考慮參數匹配的問題,用到實體中哪個屬性拿來直接用就可以,很方便。這樣做也提高了效率。

?

注:這里為什么說可以暫時理解為每個數據表對應一個實體??答:大家都知道,我們做系統的目的,是為用戶提供服務,用戶可不關心你的系統后臺是怎么工作的,用戶只關心軟件是不是好用,界面是不是符合自己心意。用戶在界面上輕松的增、刪、改、查,那么數據庫中也要有相應的增、刪、改、查,而增刪改查具體操作對象就是數據庫中的數據,說白了就是表中的字段。所以,將每個數據表作為一個實體類,實體類封裝的屬性對應到表中的字段,這樣的話,實體在貫穿于三層之間時,就可以實現增刪改查數據了)

?

綜上所述:三層及實體層之間的依賴關系:

?

思想來源于生活:

?

?

服務員:只管接待客人;

廚師:只管做客人點的菜;

采購員:只管按客人點菜的要求采購食材;

?

他們各負其職,服務員不用了解廚師如何做菜,不用了解采購員如何采購食材;廚師不用知道服務員接待了哪位客人,不用知道采購員如何采購食材;同樣,采購員不用知道服務員接待了哪位客人,不用知道廚師如何做菜。

?

他們三者是如何聯系的?

比如:廚師會做:炒茄子、炒雞蛋、炒面——此時構建三個方法(cookEggplant()cookEgg()cookNoodle())

?

顧客直接和服務員打交道,顧客和服務員(UI層)說:我要一個炒茄子,而服務員不負責炒茄子,她就把請求往上遞交,傳遞給廚師(BLL層),廚師需要茄子,就把請求往上遞交,傳遞給采購員(DAL層),采購員從倉庫里取來茄子傳回給廚師,廚師響應cookEggplant()方法,做好炒茄子后,又傳回給服務員,服務員把茄子呈現給顧客。

這樣就完成了一個完整的操作。

?

在此過程中,茄子作為參數在三層中傳遞,如果顧客點炒雞蛋,則雞蛋作為參數(這是變量做參數)。如果,用戶增加需求,我們還得在方法中添加參數,一個方法添加一個,一個方法設計到三層;何況實際中并不止設計到一個方法的更改。所以,為了解決這個問題,我們可以把茄子、雞蛋、面條作為屬性定義到顧客實體中,一旦顧客增加了炒雞蛋需求,直接把雞蛋屬性拿出來用即可,不用再去考慮去每層的方法中添加參數了,更不用考慮參數的匹配問題。

?

這樣講,不知道大家是不是可以明白。(待會實例解釋吧)

?

2,為什么使用三層?

使用三層架構的目的:解耦!!!

同樣拿上面飯店的例子來講:

1)服務員(UI層)請假——另找服務員;廚師(BLL層)辭職——招聘另一個廚師;采購員(DAL)辭職——招聘另一個采購員;

2)顧客反映:1>你們店服務態度不好——服務員的問題。開除服務員;

2>你們店菜里有蟲子——廚師的問題。換廚師;

?

任何一層發生變化都不會影響到另外一層!!!

?

3,與兩層的區別??

兩層:

?

(當任何一個地方發生變化時,都需要重新開發整個系統。“多層”放在一層,分工不明確耦合度高——難以適應需求變化,可維護性低、可擴展性低)

?

三層:

?

?

(發生在哪一層的變化,只需更改該層,不需要更改整個系統。層次清晰,分工明確,每層之間耦合度低——提高了效率,適應需求變化,可維護性高,可擴展性高)

?

綜上:三層架構的

優勢:1,結構清晰、耦合度低,2,可維護性高,可擴展性高;3,利于開發任務同步進行;容易適應需求變化

?

劣勢:1、降低了系統的性能。這是不言而喻的。如果不采用分層式結構,很多業務可以直接造訪數據庫,以此獲取相應的數據,如今卻必須通過中間層來完成。

2、有時會導致級聯的修改。這種修改尤其體現在自上而下的方向。如果在表示層中需要增加一個功能,為保證其設計符合分層式結構,可能需要在相應的業務邏輯層和數據訪問層中都增加相應的代碼

3、增加了代碼量,增加了工作量

?

4,三層的具體表現形式??

?

UI

(大家不要誤會,UI層不只是一個個用戶界面,也是需要有代碼的)

?

(1,功能:用戶輸入數據、反饋給用戶數據;2,大家觀察代碼:沒有涉及到業務邏輯,直接傳參、函數、方法調用,沒有涉及到與數據庫打交道的SQL語句和ADO.net)

?

BLL

?

1BLL是表示層與數據訪問層之間的橋梁,負責數據處理、傳遞;2,大家觀察代碼,沒有涉及到界面上的控件,沒有涉及到SQL語句和ADO.net

?

DAL

?

?

?

?

(1,以上是DAL層中DbUtil類、user_DA類和workRecord_DA類中的代碼;2,大家觀察代碼,沒有涉及到界面控件,沒有涉及到業務邏輯;只有與數據庫打交道的SQL語句和ADO.net)

?

EntityModel)層:

(定義了實體類user

觀察以上三層:

1,實體類user作為參數貫穿于三層之間;

2,通過傳參、方法調用來實現功能;

3,各層之間各負其責;互不影響

?

對比兩層結構,讓大家深刻體會三層的極大好處:

還是以機房收費系統的登陸為例:

(觀察上面的兩層的代碼:將業務邏輯、數據訪問都展現在用戶表現層,當需求需要改變時,需要改變整個系統。比如,我把文本框txtPassWord的名稱改為txtPwd的話,大家觀察一下得需要更改多少地方。這樣的改動算是小的,如果真的有業務需求上的改動才叫麻煩復雜,程序員不跳樓才怪。呵呵、、開個玩笑)

與如此難以適應需求變化的兩層相比,大家再次觀察三層代碼,再次思考,三層架構有什么好處呢?自己思考。。。。。

?

自己去發掘吧!!!

轉載于:https://www.cnblogs.com/Edison25/p/8185612.html

總結

以上是生活随笔為你收集整理的三层架构(★)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产成人精品a视频 | 91欧美激情一区二区三区 | 欧美性生活一区 | 欧美一级片在线观看 | 国产噜噜噜噜久久久久久久久 | 精品无码一区二区三区蜜臀 | jizzjizzjizz国产 | 欧美另类69xxxx | 黄一区二区三区 | 肉视频在线观看 | 动漫av一区二区 | 伊人久久一区二区三区 | 一区二区视频网站 | 国产综合区| 成年人精品 | 欧美激情精品 | 在线看免费毛片 | 日韩成人在线影院 | 日韩五码 | 久久久久久久艹 | 免费一区二区在线观看 | 精品久久久久久亚洲 | 91久久精品一区二区三 | 精彩视频一区二区 | 欧美夫妇交换xxx | 91免费看大片 | 国产在线播放一区二区三区 | 天堂网av2018 | 91成人午夜 | 丁香啪啪综合成人亚洲 | 欧美精品午夜 | 最近中文字幕在线观看视频 | 国产精品一区二区久久毛片 | 亚洲人成在线播放 | 国产一区视频免费观看 | 欧美一区二区三区成人精品 | 污污的视频在线观看 | 日本在线不卡一区二区三区 | 婷婷99 | 男男h黄动漫啪啪无遮挡软件 | 欧美影视一区二区三区 | 天堂国产精品 | 国产精品无码一区二区三 | av中文字幕免费观看 | 成年人的黄色片 | 看免费毛片 | 亚洲最大看欧美片网站 | 久色精品| 免费在线视频一区二区 | 高跟鞋肉丝交足91 | 人妻少妇精品视频一区二区三区 | 日韩成人在线免费观看 | 国产精品免费一区二区三区在线观看 | www.久久99 | 黄色小视频免费网站 | 亚洲美女福利视频 | 精品国产999久久久免费 | 人妻一区二区三区在线 | 91九色蝌蚪视频 | 伊人一区 | 青青草视频在线观看 | 精品黑人一区二区三区观看时间 | 国产精彩视频 | 亚洲激情一区二区 | 精品国产AV色欲天媒传媒 | 久久中文字幕在线观看 | 中国美女毛片 | xxxxwwww国产 | 中文字幕中文在线 | 涩涩视频免费观看 | 使劲插视频 | 97视频一区二区三区 | 久久久久久久国产精品视频 | 欧美猛交xxx | a猛片| 爱情岛论坛亚洲品质自拍 | 精品国产一区二区三区日日嗨 | 老司机久久 | 婷婷玖玖 | 久久久久久婷婷 | 国产午夜影院 | 亚洲va久久久噜噜噜久久天堂 | 中文字幕色 | 午夜嘿嘿 | 99热国 | 一区免费在线 | 欧美七区 | 东京热一区二区三区四区 | 国内自拍视频网站 | 久久激情网| 日韩xxx高潮hd| 伊人资源网| 男女网站免费 | 久久久精品中文字幕麻豆发布 | 蜜桃av色偷偷av老熟女 | 亚洲成熟少妇 | 黄色在线网站 | www欧美| 亚洲黄色第一页 |