一个好的框架,方便维护和管理。比如一个仓库,你东西全部堆一起。找都不好找,更别说维护了。
程序和仓库原理是一样的。
主要分三层:
- UI:只与用户耦合数据【用户操作的界面】
- BLL:只new出DAL对象, 对她进行调用方法【new class后,并且添加业务处理】
- 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数据类型,是全局变量。能被所有人使用。
Models的作用:当你调用方法时,会传递参数,参数1个2个还行,要是几十个参数就会有问题,不光参数顺序会写错,类型可能也会写错,还会漏写参数。每次调用方法都填写那么多参数,很不方便。所以Models就体现她的作用了。把所有参数封装成对象来传递。这样,参数栏里,只要写一个对象类型就行了。方法内部再详细写:读取该参数对象的值。(高内聚低耦合)这样就不会再错写漏写参数了。
当你理解 Models 的作用,就知道该怎么使用了。Models就像饭店的菜单一样。在UI和BLL跟DAL之间传递。
这样 Models 这个类 写在独立的命名空间下。UI,BLL,DAL都引用这个命名空间。就可以new出参数对象来传递。
- ui内部
-
- BLL bll = new BLL();
- Models models = new Models();
-
- //修改 models的值。。。。
-
- //最后
- Models 结果 = bll.某个方法( models );
在BLL 内部也是如此 new 出DAL,再把 models的参数传给 dal.某个方法( models );
就像 老板不可能去指派员工今天干什么工作。只会指派管理层,管理层再指派员工今天做什么工作。(如果什么事都由老板去做,那么,哪天换老板了,那BLL和DAL的事都要重新再写一边,这个工作量是非常大的,而且,上层一改,中层和下层全部都要改,会代码地震。代码的房子大厦都震塌了,你还准备用残砖剩瓦拼个大厦出来?这样的房子你敢住?)
代码分层后,哪层需要修改,只需要替换那一层就行。其他层都不需要修改便于维护和管理。这就是项目分层带来的优势。