我們做專案的時候通常用以下幾種架構
一.依賴三層進行開發
專案中有sqlserverdal,bll這倆個類庫,sqlserverdal有這樣乙個類customerdal.cs類,在bll層呼叫dal層如下
sqlserverdal.customerdal dal = new sqlserverdal.customerdal();
public listgetlist()
這種做法會使模組間的耦合度特別大,我們的每個專案都要盡量達到模組內高內聚,模組間低耦合的要求
二.依賴介面進行開發
我們在專案中新加上乙個類庫idal,從名字我們就可以看出,這個專案裡面全是sqlserverdal裡面的類實現的介面
public inte***ce icustomerdal
我們再讓
sqlserverdal中的
customerdal.cs類去實現這個介面,
在bll層呼叫dal層如下
idal.icustomerdal dal =new customerdal();
public listgetlist()
這樣做的好處是如果dal層換了乙個,例如把
sqlserverdal
換成accessdal,這時我們就不需要改動bll裡面的**,但是這種情況,我們的
模組間的耦合還是存在的,因為當我們需要切換資料訪問驅動層時(ado.net,ef,nh)時,還是需要改動bll層,這種情況下,我們的簡單工廠模式出現了
三.簡單工廠模式
我們在解決方案中再次新增乙個類庫dalfactory,裡面的******factory.cs類這樣實現
public class ******factory
}
在bll中這樣呼叫
idal.icustomerdal dal = dalfactory.******factory.createcustomerdal();
public listgetlist()
這時,我們發現無論是依賴的資料庫改變,還是
切換資料訪問驅動層(ado.net,ef,nh)時,我們都不需要改動bll層
四.抽象工廠模式
/// 抽象工廠類,完成資料層中物件的建立(反射建立物件)
/// 程式集,命名空間
public class abstractfactroy
/// /// 通過反射建立出類例項
///
///
///
///
public static object createinstance(string assemblypath,string fullclassname)
return instance;
}}
//快取函式定義
public class cachehelper
public static void insert(string key, object value)
}在配置檔案中新增這樣的內容
在bll層中進行如下呼叫
idal.icustomerdal dal = dalfactory.abstractfactroy.createcustomerdal();
public listgetlist()
及以後大多數情況下使用抽象工廠模式,更完美
三層架構之簡單工廠改造抽象工廠中配置檔案的新增
在上次說到的 的登入的例子中新增配置檔案,當時陰差陽錯的通過編譯並顯示登 錄成功,其實是負負為正導致了編譯成功。事實上在這個例子中並沒有成功新增配置檔案,在這次重構機房收費系統的時候在d層添 加的簡單工廠改造的抽象工廠再加上配置檔案,遇到了很大的問題。number one 錯誤讀取配置檔案失敗!讀取...
三層架構與簡單工廠模式
3層即所謂 模式 檢視 控制器 檢視 view 代表使用者互動介面 模型 model 就是業務流程 狀態的處理以及業務規則的制定 控制 controller 可以理解為從使用者接收請求,將模型與檢視匹配在一起,共同完成使用者的請求 典型案例 基於反射工廠的三層架構 設計時一般所分模組 dal 資料庫...
由簡單三層到工廠模式
以asp.net為例,簡單三層就是 dal,bll,model 三層構成,dal層處理資料,負責與資料打交道,比如sql語句的書寫等,dal層處理完資料後的結果,交由bll層,bll層這時對資料進行邏輯整理。具體如下詳細說明 現有乙個簡單的需求,乙個訂單裡可能包含幾個產品,這時,我們一般這樣處理,把...