喵喵的技术学习之路(一)
介绍
发现纯写技术蛮无趣枯燥的,也不连贯,就突发奇想,在博客中加些生活的乐趣。
主题呢就是讲一个程序员小菜鸟的学习成长,技术博客都融入到其中。背景如下:
地点:平行世界中魔都一家公司,喵喵小菜鸟一枚,大四实习妹纸。蘑菇一神秘男子,人物纯属虚构。
正文
喵喵:蘑菇,三层架构是什么东东?
蘑菇:简单来说,为了降低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层 //以后增加的业务逻辑。
一时突发奇想,本篇仅试水下,轻喷。
作者:蘑菇先生
出处: http://mushroom.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载。未经作者同意下,必须在文章页面明显标出原文链接及作者,否则保留追究法律责任的权利。
如果您认为这篇文章还不错或者有所收获,可以点击右下角的【推荐】按钮,因为你的支持是我继续写作,分享的最大动力!
如果您认为这篇文章还不错或者有所收获,可以点击右下角的【推荐】按钮,因为你的支持是我继续写作,分享的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~