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


介紹

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

主題呢就是講一個程序員小菜鳥的學習成長,技術博客都融入到其中。背景如下:

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

正文

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

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

 

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM