【温故而知新】——架构分层

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u013044029/article/details/73866224

前言

       在前两天小编遇到一个这样的问题,大概是这样的:现用springMVC+mybatis搭建开发框架,请写出你的分层设计,并阐述各层之间的调用关系。 


      先不说小编答得怎么样,就冲着这一点,小编就觉得我应该回去复习一下之前学过的三层架构。


      首先呢,不管你用了什么框架或者没用框架,都是要体现层分成的思想,线来说说我们传统的三层。


普通分层

1、表现层(UI):表现层的英文全拼:User Interface Layer。用于显示数据和接收用户输入的数据,即展现给用户的界面,用户在使用一个系统的时候的所见所得。


2、业务逻辑层(BLL):业务逻辑层的英文全拼:Business Logic Layer。用来处理各种功能请求,实现系统的业务功能,是一个系统最为核心的部分。也就是针对具体问题的操作,可以说是对数据层中方法的调用与结果的处理。


3、数据访问层(DAL):数据访问层的英文全拼:Data Access layer。就是访问数据库,和数据存储打交道,对数据库的增删改查。




   各层之间的关系

  1、表现层向业务层传递参数,发出服务请求,并将获取到的业务层返回的信息显示在界面上


   2、业务层接收表现层的服务请求,解析传递过来的参数,判断信息的合法行,并具体实现功能的各种“运算”要求,返回表现层所要的信息。


   3、数据访问层由业务层调用,通过对数据库的操作,为具体的业务逻辑层提供数据服务。


分层的细划

    分层的细划是在普通三层中细划出来的,较为细划的分成就是在普通三次的基础上,表现层还是表现层,业务逻辑层就被拆分成接口层和实现层,数据集访问层被拆分成数据访问层接口(IDAL)、数据访问层实现(DAL)和数据库实体(Model)。同时也会加上工厂层(Factory),工厂层就是通过简单工厂及反射等技术实现依赖注入,同时也管理着UI、BLL和DAL的依赖关系。如图:对于工厂层的依赖注入还是显得有些像spring,图可能有些不对,欢迎指出错误。



    当然在这个基础上的分层还可以在前面的基础上,在业务层上添加切面层(AOP),在三层的基础上添加核心代码可复用代码层,有数据工厂(Factory)、数据实体操作者(Helper即数据操作者的接口及接口实现,主要为Provider中对象的一些执行方法)和数据提供者(Provider即Provider的接口和不同数据提供者的实现,主要为Helper提供操作对象)。如图:







优缺点

优点

1、开发人员可以只关注整个结构中的其中某一层;


2、可以很容易的用新的实现来替换原有层次的实现;


3、可以降低层与层之间的依赖;


4、有利于标准化;


5、有利于各层逻辑的复用


6、结构更加明确


7、在后期维护的时候,极大地降低了维护成本和维护时间


缺点

1、降低了系统的性能。系统不采用分层式结构,很多业务可以直接访问数据库来获取相应的数据,可是采用分成是结构,则需要通过中间层来完成。


2、可能会导致级联的修改。这个修改尤其体现在自上而下的方向。如果在表示层中需要增加一个功能,为保证其设计符合分成是结构,可能需要在相应的业务逻辑层和数据访问层中都增加相应的代码。


3、增加了开发成本


猜你喜欢

转载自blog.csdn.net/u013044029/article/details/73866224