层次式架构设计

一.概述

层次式架构为软件系统提供了一种在结构,行为和属性方面的高级抽象,他的核心思想是讲系统组成一种层次结构每一层为上层服务并作为下层的客户.内部的层接口只对相邻层可见,连接件通过决定层间如何交互的协议来定义.由于每一层最多只影响两层,同时只给相邻层提供相同的接口,允许每层用不同的方法实现,为软件重用提供支持.

层次式体系架构也被叫做N层体系架构模式.这也是Java EE经常采用的标准模式.大部分应用会被分成表现层,中间层(业务层)数据访问层(持久层)和数据层.小的应用有时候会将业务层和持久层合在一起.

分层架构的特性是关注分离.

二.表现层设计模式

表现层设计模式由MVC模式,MVP模式和MVVM模式.

1.MVC模式

MVC模式强制的把一个应用的输入处理输出流程按照视图-控制-模型的方式进行分离,形成了视图,控制器,模型三个核心模块.首先控制器controller接收以用户请求,并决定应该调用哪个模型,然后模型根据请求进行业务逻辑处理,返回数据给控制器,最后控制器调用视图来格式化模型返回的数据,通过视图呈现.

优点

  • 允许多种用户的界面扩展,视图和模型没有必然的联系,全靠控制器根据情况调用.当增加新的用户界面时,只改视图和控制器就行,不懂模型.
  • 易于维护,控制器和视图根据模型扩展而进行扩展,旧版本也能接着用
  • 业务处理和显示分离,增强应用的强壮性和灵活性.

2.MVP模式

MVP(model-view-presenter)模型提供数据,视图提供显示,presenter提供逻辑的处理.与MVC的区别是,MVP不允许view和model直接交流,要通过presenter控制.降低了view和model的耦合,也降低了presenter对view的依赖.

MVP模式的流程

  • 用户操作 View → View 将事件传递给 Presenter
  • Presenter 处理逻辑 → 调用 Model 获取 / 处理数据
  • Model 返回结果 → 通过回调通知 Presenter
  • Presenter 更新 View → 调用 View 的接口更新 UI
  • View 展示结果 → 纯被动渲染,无业务逻辑

优点

  • 模型与视图分离,可以修改视图而不影响模型
  • 可以更高效的使用模型,因为所有交互都发生在presenter内部
  • 一个presenter可以用于多个视图,presenter的逻辑不需要改变,这个特定极其油用,因为视图的变化总是比模型的变化更加频繁.
  • 若把逻辑放在presenter中,就可以脱离用户接口来测试这些逻辑(单元测试)

PS:MVP模式更多应用在安卓开发模式中.

3.MVVM模式

MVVM模式是为了解决MVP中UI种类变多,接口也会不断增加的问题而提出的,MVVM的全称是Model-View-ViewModel,也都实现了视图和模型的分离,不同的是,视图和模型的交互由viewModel来实现,viewModel是MVVM的核心,View和Model的双向绑定内容包含数据状态处理,数据绑定,以及数据交换,绑定的数据内容一但变更就会反应到view层.像一个观察者监听数据的变化,对视图进行自动更新.

三.业务层(中间层)

中间层也叫业务层,是实现系统功能的核心组件,采用容器的形式便于系统的开发,代码重用和管理.

业务逻辑层是按照Domain-model-service-controller思想来实现的,domain-modal是领域层业务对象,service是业务实现的组成部分,通过统一的接口联系,服务之间实现松耦合,controller服务控制器,实现不同服务之间的切换,提高服务的灵活性和重用性.

四.数据访问层

数据访问层由五种数据访问模式

  1. 在线访问模式会占用一个数据连接,读取数据,每个数据库操作都会通过这个连接不断的与后台的数据源交互.
  2. DAO模式data-assess-object,是标准JREE设计模式之一.这种模式将底层数据访问操作与高层业务逻辑分开.一个典型的DAO组件包含一个DAO工厂类,一个DAO接口,一个实现接口的具体类,数据传输对象.
  3. DTO模式(data-transfer-object)是经典的EJB设计模式之一,本身是一组对象或数据的容器.需要跨越不同的进程和网络的边界来传输数据,本身不包含具体的业务逻辑,只在内部进行基本的验证和检查的方法,而这些方法最好不要调用该其他的对象.
  4. 离线数据模式以数据为中心,从数据源获取之后,按照预定义的结构存放在系统中,成为应用的中心,独立于后台的数据源连接或事务.
  5. ORM(object-relation-mapping)将关系数据库中的记录转换成代码易操作的对象.不需要和复杂的sql打交道.

你可能感兴趣的:(系统架构,架构)