介紹
發現純寫技術蠻無趣枯燥的,也不連貫,就突發奇想,在部落格中加些生活的樂趣。
主題呢就是講一個程式設計師小菜鳥的學習成長,技術部落格都融入到其中。背景如下:
地點:平行世界中魔都一家公司,喵喵小菜鳥一枚,大四實習妹紙。蘑菇一神祕男子,人物純屬虛構。
正文
喵喵:蘑菇,三層架構是什麼東東?
蘑菇:簡單來說,為了降低Ui層和資料層的耦合,在中間增加一道緩衝層,基本表現形式是業務邏輯層。 看下面的圖:
喵喵:哼,從網上copy的,我也看到過,可是我大部分UI層只是展示資料,沒有業務邏輯啊?
敲頭,成大事,要考慮遠一點。它主要是緩衝UI和資料層的直接互動,不但是業務邏輯,以後你增加快取層,服務層呢。
三層都是變化之根本,萬丈高樓的地基。某大神曾說過:軟體開發中遇到的所有問題,都可以通過增加一層抽象而得以解決。
這是基礎,懂了嗎 喵喵。
喵喵:不懂,我是小女子,就不想在沒有邏輯的地方包裝一層,你有什麼好辦法? /鄙視眼神
你UI層部分有邏輯部分又沒有,好吧! 但是別沒有的直接調DAL,有的直接調BLL,這樣以後不方便維護。
你UI層統一調BLL,不能直接下沉調DAL。至於沒有邏輯的話,你可以通過代理呼叫。資料層如下:
public class OrderData { public void GetList(string orderID) { } public void AddOrder(OrderInfoEntity info) { } } public class OrderInfoEntity { }
邏輯層,增加一道資料代理如下:
public class OrderBLL { private Lazy<OrderData> _dataProxy; public OrderData DataProxy { get { return _dataProxy.Value } } public OrderBLL() { _dataProxy = new Lazy<OrderData>(true); } public void AddOrder(OrderInfoEntity info) { DataProxy.AddOrder(new OrderInfoEntity { }); } }
延遲初始化,能提高系統載入速度,只在使用的時候才初始化。 你呼叫如下:
OrderBLL ob = new OrderBLL(); ob.AddOrder(new OrderInfoEntity()); //有業務邏輯的調 ob.DataProxy.GetList(); //沒有業務邏輯的通過代理調。
如果你以後增加業務的話,如下:
public void GetList(DateTime dt) //BLL層 { var result = ob.DataProxy.GetList().where(r => r.CreateDate == dt); } ob.GetList(DateTime.Now); //UI層 //以後增加的業務邏輯。
一時突發奇想,本篇僅試水下,輕噴。