• C#三层架构


    一个好的框架,方便维护和管理。比如一个仓库,你东西全部堆一起。找都不好找,更别说维护了。

    程序和仓库原理是一样的。

    主要分三层:

    1. UI:只与用户耦合数据【用户操作的界面】
    2. BLL:只new出DAL对象, 对她进行调用方法【new class后,并且添加业务处理】
    3. DAL:输入输出数据【class类型,只有最基础的功能,如通讯模块:{开,关,发,收}】

     UI:就是ui 画面 (比如公司老板)只有这层是窗体类型【只new出BLL的class】

    BLL:业务 (4S店的接待员,企业的管理层)(类库)【只new 出DAL的class】

    DAL:对象服务类(公司的电工,员工,修车师傅等)(类库)【class类,只有最基础的功能】

    举个例子:你汽车保养,你就相当于ui,接待员就是BLL,修车师傅就是DAL

    这个过程中,你的角色是老板下达命令,BLL是秘书提供的服务,DAL是被秘书调遣

    ui你 new出BLL对象,调用BLL她的方法。
    BLL内,new出DAL的对象,调用DAL对象的方法。并且带BLL的业务处理
    
    DAL内 new出 Models数据类型,处理完后,把参数对象,返回给上级
    Models数据类型,是全局变量。能被所有人使用。

    ui和BLL都不知道 数据的来源(数据隔离)

    Models的作用:当你调用方法时,会传递参数,参数1个2个还行,要是几十个参数就会有问题,不光参数顺序会写错,类型可能也会写错,还会漏写参数。每次调用方法都填写那么多参数,很不方便。所以Models就体现她的作用了。把所有参数封装成对象来传递。这样,参数栏里,只要写一个对象类型就行了。方法内部再详细写:读取该参数对象的值。(高内聚低耦合)这样就不会再错写漏写参数了。

    当你理解 Models 的作用,就知道该怎么使用了。Models就像饭店的菜单一样。在UI和BLL跟DAL之间传递。

    这样 Models 这个类 写在独立的命名空间下。UI,BLL,DAL都引用这个命名空间。就可以new出参数对象来传递。

    1. ui内部
    2. BLL bll = new BLL();
    3. Models models = new Models();
    4. //修改 models的值。。。。
    5. //最后
    6. Models 结果 = bll.某个方法( models );

    在BLL 内部也是如此 new 出DAL,再把 models的参数传给 dal.某个方法( models );

    注意: ui 内不应该 出现 new DAL();

    就像 老板不可能去指派员工今天干什么工作。只会指派管理层,管理层再指派员工今天做什么工作。(如果什么事都由老板去做,那么,哪天换老板了,那BLL和DAL的事都要重新再写一边,这个工作量是非常大的,而且,上层一改,中层和下层全部都要改,会代码地震。代码的房子大厦都震塌了,你还准备用残砖剩瓦拼个大厦出来?这样的房子你敢住?)

    代码分层后,哪层需要修改,只需要替换那一层就行。其他层都不需要修改便于维护和管理。这就是项目分层带来的优势。

  • 相关阅读:
    java用easyexcel按模版导出
    【leetcode】【剑指offer Ⅱ】050. 向下的路径节点之和
    详解MySQL隔离级别
    java.lang.Enum类下compareTo()方法起什么作用呢?
    国赛高教杯使用python/matlab必会算法数学建模-回归分析模块(课程6)
    【C++初阶-类和对象下】嗯...这样对劲多了
    git 生成公钥
    MySQL 表分区使用实践
    快速解决“msvcp110.dll丢失”问题,msvcp110.dll丢失修复分享
    docker镜像配置mysql、redis
  • 原文地址:https://blog.csdn.net/cfqq1989/article/details/127099755