以ASP.NET為例,簡單3層就是 DAL, BLL,Model 3層構成, DAL層處理數據,負責與數據打交道,比如SQL語句的書寫等,DAL層處理完數據后的結果,交由BLL層,BLL層這時候對數據進行邏輯整理。具體以下詳細說明:
現有1個簡單的需求,1個定單里可能包括幾個產品,這時候,我們1般這樣處理,把定單寫在主表,把具體的詳細商品寫在定單詳細表,詳細表中有1個主表的ID,用于關聯2表。當用戶下單提交時,處理以下:
兩個表設為 主表Orders, 副表 OrderItem
DAL層:寫SQL語句,分別寫兩個方法,1個是插入主表的方法,另外一個是插入副表的方法。
插入主表Orders
插入副表OrderItem,語句這里略掉,這里只說明思路,不做真實的數據。
這兩個方法,首先履行第1個返回的ID,然后第2個方法要用到這個返回的ID,那末這個邏輯處理就在BLL層里來處理了,這樣寫:
這個方法履行完,再返回到頁面層級結果。
注意:其實上面的業務層處理嚴格的說寫的不正確,為何呢?假想我們插入主表成功了,但返回ID后,插入副表的時候,出錯了,沒有插入,那末就會造成數據庫里只保存了定單信息,但沒有定單詳情信息。如何解決呢?自然我們會想到了事務,1旦出現上述情況,使用事務時,數據庫會回滾,就是第2步出錯了,那末第1步也會撤銷。
固然,這就個就要寫在DAL層里了,在DAL層里把各個的添加方法寫好了,然后在寫1個方法,這個方法就是把各個方法加到事務中去,如果有1條語句履行時出錯,則事務回滾,等于沒有操作。
這基本上是1個簡單3層的形象的最簡單的介紹,那末簡單3層有時候不能滿足我們需要,比如說,你是1家軟件公司,那末你開發了1個軟件,用的SQLServer,而恰好碰到1個客戶需要使用oracle,或是mysql,怎樣辦?固然,你也能夠改,但是改的東西多了,最最少全部數據層都要被你扒了1遍了,而有1種方法基本不用怎樣修改就能夠到達需求,那就是工廠模式。
簡單介紹:使用工廠模式,面向接口的編程,把數據層和業務層使用接口來交接,面向接口,不面向具體的實現,只要操作接口,實現變了也無所謂。
首先我們還是定義SQLServerDAL,BLL,Model3層,這次我們把DAL與BLL不直接進行交互了,中間插入1個IDAL接口層,這個接口負責與BLL通訊,
BLL通過工廠反射等創建接口IDAL,
SQLServerDAL只需實現IDAL便可,
如果某1天你想換數據庫,只需加相應的接口實現便可。
比如添加1個OracelServerDAL等
或是你提早把全部的數據層寫好SQLServerDAL,OracelServerDAL,MySqlServerDAL……要哪一個用哪一個
固然,工廠模式帶來的好處也絕不單單是上述這點功勞。