架构设计的目的是解决软件系统复杂度带来的问题。分层架构设计只不过是架构设计中的一种设计思想和方法论
认识分层架构
分层架构是运用最为广泛的架构模式,几乎每个软件系统都需要通过层(Layer)来隔离不同的关注点(Concern Point),以应对不同需求的变化,使得这种变化可以独立进行。简单点说,它将整体系统拆分成N个层次,每个层次有独立的职责,多个层次协同提供完整的功能。
分层的依据和原则
-
基于关注点不同
机器为本,用户至上:机器是运行系统的基础,而我们打造的系统是为用户提供服务的。经典分层架构为三层正是源于这样的认知:其上,面向用户的体验与交互;其中,面向应用与业务逻辑;其下,面对各种外部资源与设备。 -
面对变化
分层应针对不同的变化原因确定层次的边界,严禁层次之间互相干扰,或者至少将变化对各层带来的影响降到最低。层与层之间的关系应该是正交的
正交:指互相独立,不可替代,并且组合起来可以实现其他功能
-
同一层的组件处于同一个抽象层次
这是分层架构的设计原则,它要求一个方法中的所有操作处于相同的抽象层,这就是所谓的“单一抽象层次原则”。例如:一个方法中不能既有“连接数据库”这种抽象层,又有“执行业务逻辑”这种抽象层。这样我们的代码就不具备可读性和可维护性。
分层架构优势
- 分层架构将软件应用划分为若干层,每一层只解决一部分问题,通过各层的协作提供整体的解决方案。大的问题被分解为一系列相对独立的子问题,局部化在每一层中,这样就有效的降低了单个问题的规模和复杂度,实现了复杂系统的最为关键的一步分解
- 分层架构具有良好的拓展性。各层级的职责单一化,实现高内聚低耦合,各层次的功能可以最大化地复用,层与层之间可以方便的插入新的层来拓展应用
- 分层架构利于维护。不同的功能被封装在不同的层中,层与层之间的耦合度显著降低,各层之间通过接口交互,因此改某层代码时,只要不修改接口,就不会严重影响其它层
分层架构缺点
- 降低了系统的性能。这是不言而喻的。如果不采用分层式结构,很多业务可以直接造访数据库,以此获取相应的数据,如今却必须通过中间层来完成。
- 有时会导致级联的修改。这种修改尤其体现在自上而下的方向。如果在表示层中需要增加一个功能,为保证其设计符合分层式结构,可能需要在相应的业务逻辑层和数据访问层中都增加相应的代码。
- 增加了开发成本。
网友评论