自己的机房进行了已经多半个月,有一开始的茫然到现在的亦步亦趋,我感觉自己还是存在这思路不清晰的问题,总是想不明白七层之间的具体关系,观赏各位巨人的博客也只是一知半解,究其原因我认为我应该只是看了各位大鸟的博客,没有自己的思考与总结,于是自己的思路一直都不是很清晰,所以我决定现在赶紧重新理一下思路,加入些自己的思考。
首先,七层之间的关系图我想不出什么新颖的地方,模式都是一样,只不过我感觉要明确每一层的具体作用,不能混淆;我们学习设计模式都学过单一职责原则,我想每一层都应该相对于别的层内部功能独立,但是彼此之间具有对应的联系。
接着,我先陈述一下七层各自的功能:
UI层(界面表示层):这层主要放置一些窗体,就是大家能看得见,也是客户的第一印象,是我们首先要做好的,窗体的灵魂还是代码:这部分代码主要是一些信息的输入与输出。
BLL层(业务逻辑层):这层主要是一些逻辑的运算,比如说一些逻辑返回值的判断语句等;
DAL层(数据访问层):这层包含了一个个类,这些类是数据库每一张表的方法的抽象。
Facade(外观层):这层主要是为了解除U层和B层的耦合性,对B层的抽象,这样我们改动B层不会影响到U层对它的调用。
Factory(工厂层):这部分是为了解除D层与B层的耦合,通过把功能模块的抽象成一个个工厂,来省去修改D层对B层的影响,同时这里涉及到了接口层;
IDAL(接口层):这里更加保护了DAL层的变动不会影响到B层,同时也是对D层的一个保护,D层做了什么改动,B层不会知道,B层只是通过调用工厂生产的接口就可以联系到D层了。
Entity(实体层):这里主要是打包数据,一个表抽象成一个类,同时把字段写出来,等着其它层的调用。
然后,我们再来说一下七层之间的关系:这七层的关系我感觉和我们电子专业的一种数模转换的关系很相似。比如说我们通过电脑看一幅图片,UI层就相当于我们电脑屏幕上的图片,就是我们能看到的;Facade层就相当于这个图片的不上色的情况;BLL层就相当于模拟信号,DAL层就是数字信号,它们之间通过数模转化器(接口加工厂)来进行交互,至于最底层的实体层就相当于(高低电平(0、1)),只不过在DAL它就是0和1,到了BLL它就变成高低电平了。就是UI引用外观和实体;外观引用业务逻辑层和实体层;业务逻辑层引用工厂和接口以及实体层;接口引用实体层;数据访问层引用实体和接口层;工厂层引用接口层;BLL抽象出了工厂层,工厂层生产出了接口层,接口层被数据访问层所实现继承。
最后,纸上得来终觉浅,绝知此事要躬行;只有实践才是检验自己的唯一标准,我说的这些都只是纸上谈兵,虽然做了一些实践,但是还是实践的力度不够,先试着敲下去,希望我能在你们这些巨人的肩膀上走的更远。