基於基本三層如何降低層之間的耦合度


版權聲明:本文為博主原創文章,未經博主允許不得轉載。

前言:對於一個項目的實現,往往都是,產品需求分析,產品設計,UI設計,數據庫設計,后台編碼,前端頁面,各種測試,發布產品;

這個產品是我個人利用閑暇時間做着玩,包括網站,以及后台管理系統;額外說一句,前端頁面是在網上下的模板,個人對前端不算精通。從產品分析到設計,以及數據庫建立還有框架的搭建,我只花了2天時間,當然,這是個小網站,表的設計沒有很多只有4-5張;

廢話不多說了!

整個產品架構采用6層架構,主要目的是減少每層之間的耦合度以及依賴性,方便以后代碼的復用和變動

圖中每個箭頭的指向代表引用

解釋下這6層的各自作用以及實現的功能:

Model層:這里沒什么好講的,主要是利用EntityFramework框架和codingfirst直接生成的各個類以及context,但還得自己加一個類,作為之后調用context入口時的唯一性,也就是再寫一個單例模式的類

IDAL層:是對DAL層的抽象,在這里我們定義了每個DAL層的行為規范,這里我們定義了四個,增刪改查和分頁查詢,四個行為規范;為了體現代碼質量,盡量避免寫重復得代碼,我又把這四個行為放到一個IbaseDao<T>,而具體的每個Idal只需繼承即可,如圖:

 

DAL層:數據訪問層,對於每張表都有的增刪改查的功能,抽出來一個泛型BaseDao<T>在此類中實現上述IbaseDao定義的幾個行為,而具體的每個DAO類只需要繼承ibaseDao<T>,和其對應IDAL接口類

 

Factory層:是BLLDal層進行交互的一個節點,本層采用依據傳過來的IDAL接口,通過讀取dal程序集,依據idao類型是不是其父類這個特性,找到dao,並返回給bll層;對於直接在BLL層中創建dao相比,耦合度大大的降低依賴性也不是那么重要,對於在后面的維護和復用是不言而喻的;代碼下圖:

 

 

BLL層:說到這個層,其實大家還可以去試一下,多加兩個層IBLL,BLLfactory,其作用和上述的IDALfactory層大相徑庭,作用也是減少BLLUI層的耦合度和依賴,在原來的三層中,BLL是直接new dal對象調其方法,但在本項目中,是調取Factory層的CreateDAO方法,而且不需要引用dal層,只需引用IDAL,在傳過去的類型中我們也只需要把相應的dal的接口idal類型傳過去,從而對dal層的依賴減少,代碼如下圖:

 

 

UI層:采用MVC框架搭建,對於數據前后台交互式采用強類型視圖,一般是把需要的數據封裝到Model中然后再前端操作;

后言:本來不想發這篇博客的,感覺大家都很懂,沒必要,但我相信一定還有覺得這是一篇有用的博客的朋友,其實最開心的事,莫過於能幫助到你!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM