前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >喵喵的技术学习之路(一)

喵喵的技术学习之路(一)

作者头像
蘑菇先生
发布2018-05-21 17:57:06
6020
发布2018-05-21 17:57:06
举报

介绍

发现纯写技术蛮无趣枯燥的,也不连贯,就突发奇想,在博客中加些生活的乐趣。

主题呢就是讲一个程序员小菜鸟的学习成长,技术博客都融入到其中。背景如下:

地点:平行世界中魔都一家公司,喵喵小菜鸟一枚,大四实习妹纸。蘑菇一神秘男子,人物纯属虚构。

正文

喵喵:蘑菇,三层架构是什么东东?

蘑菇:简单来说,为了降低Ui层和数据层的耦合,在中间增加一道缓冲层,基本表现形式是业务逻辑层。 看下面的图:

 喵喵:哼,从网上copy的,我也看到过,可是我大部分UI层只是展示数据,没有业务逻辑啊?

 敲头,成大事,要考虑远一点。它主要是缓冲UI和数据层的直接交互,不但是业务逻辑,以后你增加缓存层,服务层呢。

 三层都是变化之根本,万丈高楼的地基。某大神曾说过:软件开发中遇到的所有问题,都可以通过增加一层抽象而得以解决。

 这是基础,懂了吗 喵喵。

 喵喵:不懂,我是小女子,就不想在没有逻辑的地方包装一层,你有什么好办法? /鄙视眼神

 你UI层部分有逻辑部分又没有,好吧! 但是别没有的直接调DAL,有的直接调BLL,这样以后不方便维护。

 你UI层统一调BLL,不能直接下沉调DAL。至于没有逻辑的话,你可以通过代理调用。数据层如下:

代码语言:javascript
复制
  public class OrderData
    {
        public void GetList(string orderID) { }
        public void AddOrder(OrderInfoEntity info) { }
    }
    public class OrderInfoEntity { }

逻辑层,增加一道数据代理如下:

代码语言:javascript
复制
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 { });
        }
    }

延迟初始化,能提高系统加载速度,只在使用的时候才初始化。  你调用如下:

代码语言:javascript
复制
           OrderBLL ob = new OrderBLL();
            ob.AddOrder(new OrderInfoEntity());  //有业务逻辑的调
            ob.DataProxy.GetList();              //没有业务逻辑的通过代理调。

如果你以后增加业务的话,如下:

代码语言:javascript
复制
 public void GetList(DateTime dt)            //BLL层
        {
            var result = ob.DataProxy.GetList().where(r => r.CreateDate == dt);
        }

ob.GetList(DateTime.Now);   //UI层          //以后增加的业务逻辑。

一时突发奇想,本篇仅试水下,轻喷。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2015-01-25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 介绍
  • 正文
    • 喵喵:蘑菇,三层架构是什么东东?
      •  喵喵:哼,从网上copy的,我也看到过,可是我大部分UI层只是展示数据,没有业务逻辑啊?
        •  喵喵:不懂,我是小女子,就不想在没有逻辑的地方包装一层,你有什么好办法? /鄙视眼神
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档