三層,介面,簡單工廠,抽象工廠

2021-07-09 02:19:14 字數 1929 閱讀 9806

我們做專案的時候通常用以下幾種架構

一.依賴三層進行開發

專案中有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層這時對資料進行邏輯整理。具體如下詳細說明 現有乙個簡單的需求,乙個訂單裡可能包含幾個產品,這時,我們一般這樣處理,把...