喵喵的技術學習之路(一)

蘑菇先生發表於2015-01-25

介紹

發現純寫技術蠻無趣枯燥的,也不連貫,就突發奇想,在部落格中加些生活的樂趣。

主題呢就是講一個程式設計師小菜鳥的學習成長,技術部落格都融入到其中。背景如下:

地點:平行世界中魔都一家公司,喵喵小菜鳥一枚,大四實習妹紙。蘑菇一神祕男子,人物純屬虛構。

正文

喵喵:蘑菇,三層架構是什麼東東?

蘑菇:簡單來說,為了降低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層          //以後增加的業務邏輯。

 

一時突發奇想,本篇僅試水下,輕噴。

相關文章