对于一个稍微有点经验的写代码的人而言,分层是不陌生的。
今天小组里面针对目前的三层式结构,各层的职责作了一定的探讨,并有一定的结果,记录之,以期后用。
先看看,我们以前的结构(其实们们一共有四层)。
UI:与用户交互的界面层---
Fac层(外观层):对BLL 原子方法进行组合。
BLL 层:最严谨的参数校验;为Fac层提供原子方法(原子性,是为了方便Fac组装业务);转发DAL层数据给Fac;
DAL 层:数据访问层,只负责数据访问,不包含任何业务逻辑。
这样做了近两年,我们发现:
1. Fac中组装业务逻辑的方法,通常很长,为了代码可读性,我们通常分多个私有方法。但Fac层显得很臃肿。
2. BLL层方法似乎只起了转发的功能。
于是,我们开始讨论:是否将一些业务逻辑也放到BLL来做?即BLL层的方法,除了包含很原子的方法以外,也可以包含一些组装过的业务方法(这个组装过程以前是在Fac的)。经过讨论:
我们认为:初步结构应该如下:
Fac 中的一个方法,只体现业务主体流程,不包含实现(参数校验等);(对异常的处理);一个Fac方法,可以调用多种BLL类型的(多个)方法;
BLL 包含原有的最简单、原子化的操作,同时可以对BLL对象相关的业务进行封装(新增)--可调用对应的DAL的多个方法;参数校验;数据返回无效时,throw 异常(交由FAC处理)
DAL 和原来一致:负责数据访问。