文档章节

再谈三层架构

白志华
 白志华
发布于 2015/10/18 10:57
字数 753
阅读 4
收藏 0
    再次谈起三层架构来,初识三层时的那种向往,那种青涩,已经不见了踪影,取而代之的是对分层的感慨。

    分层,三层也好,七层也罢,都是将页面显示、业务逻辑控制、数据访问进行解耦。还有MVC和设计模式也是这样。只分UI,BLL,DAL这三层,只是实现了基本的解耦,但是耦合性还是很高的,尤其是对于中型及以上的系统来说,简单的三层并不能满足其需求。DAL提取出DBHelper,BLL中提取出Facade层,还有各层之间其实都应该加上接口。这样系统的灵活性才会大大提高。

    对于B层的划分,有人说按数据表走,一个表一个类;有人说按窗体走,一个窗体一个类(PS:我这里是重构,有原系统做参考,如果是开发一个新系统,则没有这种说法);有人说按用例走,一个用例一个类。合作开发完以后,我好好分析了一下这三者。第一种方法,B层的类会相对少一些,维护工作会比较轻松,不过假如增加一个功能,那么就得相应的修改B层的类,不满足开闭原则。第二种方法,局限性更大。只要修改窗体,就得修改类。这样给人的感觉,B层依赖于UI层。但是分层应该是上层依赖于下层。第三种方法,满足开闭原则,添加功能,直接添加一个类即可。但是不足的是B层中类太多了。分析之后。我觉得应该改善第三种方法,在B层包中,为每个表添加一个子包,然后对应B层的操作放到对应子包中。这样就不会太乱了。添加功能时,直接在对应的子包中添加类。一个用例一个类。满足了开闭原则和单一职责原则。

    对于Facade层如何划分,暂时没有确定的想法。有2种观点:一是将有关系的类,相近的类放到一个外观类。另一种观点按UI层来划分。不过感觉第一种观点稍微科学一点。暂时没有更好的想法。

    在个人版和合作版开发完后,感觉接口挺重要的,开发接口可以大大增加系统的灵活性。而且,每一层只要针对于接口进行编程即可。不用考虑下一层的具体实现。下一层如何更改都无关紧要,只要接口不变,那么系统运行无阻碍。在开发前期,先开发接口,这样上层接口在编程时,调用下层会很容易,且不易出错。调试的时候也很方便。

版权声明:本文为博主原创文章,未经博主允许不得转载。

本文转载自:http://blog.csdn.net/xiaoxian8023/article/details/7288805

共有 人打赏支持
白志华
粉丝 31
博文 265
码字总数 57524
作品 0
长沙
程序员
私信 提问
再谈UNIX流机制和tty驱动

忍不住再次说一下unix的流机制。周末在家调试linux的终端驱动,发现linux并没有按照unix流机制的建议来实现tty驱动,虽然我对windows内核理解不如对linux深刻,可是还是略知一二,windows的分...

晨曦之光
2012/04/10
273
0
mvc与三层结构终极区别

注:本文章内所有内容都来自互联网,本人主要是起了一个收集的作用 http://www.cnblogs.com/zhhh/archive/2011/06/10/2077519.html 又看到有人在问三层架构和MVC的关系,感觉这种问题有点教条...

长平狐
2012/11/12
10.4K
0
三层架构与MVC

三层架构与MVC有区别,但联系紧密。 他们的作用都是为了降低系统耦合度。 三层架构 三层架构 视图层(View) 存放接收用户提交请求的代码 服务层(Service) 存放系统的业务逻辑代码 持久层(Dao)...

stormxing
2017/12/11
0
0
三层架构和MVC模式

1、三层架构 三层架构(3-tier application) 通常意义上的三层架构就是将整个业务应用划分为:表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)。区分层次的目的即为了“高内聚,低耦合”...

_Roger_
2015/10/21
2.5K
1
JavaEE软件开发体系架构

前言 上篇文章小编提到了什么是javaEE和它的13个核心规范,本篇文章,小编带您走进JavaEE的体系结构,从两层架构,三层架构,MVC,基于JavaEE架构模式下的MVC,JavaEE的四层架构。 两层架构 ...

weienjun
2017/12/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Gradle 提速:每天为你省下一杯喝咖啡的时间

摘要: ### 前言 作为一名 Android 开发同学,当你的工程和代码达到一定规模的时候,相信你一定遇到过编译速度过慢的问题。比如: ![](https://user-gold-cdn.xitu.io/2018/11/6/166e7021c0...

阿里云官方博客
24分钟前
2
0
在 PHPStorm 中如何对远程服务使用 xdebug 进行断点调试

1. 安装 xdebug 1.1. 下载、安装 ➜ ~ wget https://xdebug.org/files/xdebug-2.4.1.tgz➜ ~ tar zxf xdebug-2.4.1.tgz➜ ~ cd xdebug-2.4.1➜ ~ phpize➜ ~ ./configure --with-ph......

whoru
26分钟前
2
0
看完这篇文章还不懂Python装饰器?

1、必备 2.需求来了 初创公司有N个业务部门,1个基础平台部门,基础平台负责提供底层的功能,如:数据库操作、redis调用、监控API等功能。业务部门使用基础功能时,只需调用基础平台提供的功...

糖宝lsh
32分钟前
5
0
Bytom合约预编译

比原项目仓库: Github地址:https://github.com/Bytom/bytom Gitee地址:https://gitee.com/BytomBlockchain/bytom 在开发合约的过程中你们有没有遇到一些问题呢?比如编译合约的过程中不能...

比原链Bytom
33分钟前
3
0
supervisor安装配置

supervisor安装配置 安装 wget -c https://files.pythonhosted.org/packages/44/60/698e54b4a4a9b956b2d709b4b7b676119c833d811d53ee2500f1b5e96dc3/supervisor-3.3.4.tar.gztar -zxvf su......

jackmanwu
59分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部