arch4 层次式架构设计

每一层为上层服务,并作为下层客户
大部分的应用会分成表现层(或称为展示层)、中间层(或称为业务层)、数据访问层(或称为持久层)和数据层。

1. 表现层架构设计

1.1 MVC模式

模型:表示业务数据和业务逻辑
视图:用户看到并与之交互的界面
控制器: 接受用户的输入并调用模型和视图去完成用户的需求
控制器接收用户的请求,并决定应该调用哪个模型来处理;然后,模型根据用户请求进行相应的业务逻辑处理,并返回数据;最后,控制器调用相应的视图来格式化模型返回的数据,并通过视图呈现给用户。

优点:

  1. 允许多种用户界面的扩展,视图和模型解耦,如果新增用户界面,只需改动视图和控制器。
  2. 易于维护。只要保持公共接口,控制器和视图的旧版本也可以使用。
  3. 用户界面功能强大。用户界面和模型方法调用组合,程序使用清晰。

1.2 MVP(Model-View-Presenter)

模式提供数据, View 负责显示, Controller/Presenter 负责逻辑的处理。
MVC模式中元素之间“混乱”的交互主要体现在允许View和 Model 直接进行“交流”,这在 MVP模式中是不允许的。在MVP 中 View并不直接使用 Model, 它们之间的通信是通过 Presenter(MVC 中的Controller) 来进行的,
优点:

  1. 模型和视图完全分离,可以修改视图而不影响模型。
  2. 可以更高效地使用模型,因为所有的交互都发生在一个地方——Presenter 内部。
  3. 可以将一个Presenter用于多个视图,而不需要改变Presenter的逻辑。这个特性非常的有用,因为视图的变化总是比模型的变化频繁。
  4. 如果把逻辑放在Presenter中,就可以脱离用户接口来测试这些逻辑(单元测试)。

1.3 MVVM模式全称是模型-视图-视图模型 (Model-View-ViewModel)

View与 Model的交互通过ViewModel来实现。ViewModel是MVVM的核心,它通过DataBinding实现View与Model之间的双向绑定,其内容包括数据状态处理、数据绑定及数据转换。
ViewModel 能够监听到数据的变化,然后通知对应的视图做自动更新;而当用户操作视图, ViewModel 也能监听到视图的变化,再通知数据做改动,从而形成数据的双向绑定。这使得 MVVM 更适用于数据驱动的场景,尤其是数据操作特别频繁的场景。

2. 中间层(业务层)架构设计

业务逻辑组件分为接口和实现类两个部分。
业务逻辑组件的实现类:业务逻辑组件的实现类将DAO组件接口实例作为属性(面向接口编程),而对于复杂的业务逻辑,可能需要访问多个对象的数据,那么只需在这个方法里调用多个DAO 接口,将具体实现委派给DAO 完成。

业务逻辑层实体设计
业务逻辑层实体提供对业务数据及相关功能(在某些设计中)的状态编程访问。
业务逻辑层实体不启动任何类型的事务处理,事务处理由使用业务逻辑层实体的应用程序或业务过程来启动。
将业务逻辑层实体表示为XML 的优点:

  1. 标准支持。
  2. 灵活性。
  3. 互操作性。

业务层采用业务容器 (Business Container) 的方式存在于整个系统当中;

  • 业务容器
    • Domain model 仅仅包含业务相关属性
    • Service 是业务实现的组成部分,是应用程序的不同功能单元
    • Control 服务控制器,不同服务之间的切换通过它来实现。将服务实现和转向控制分离,提高服务实现的灵活性和重用性。

3. 数据访问层设计

  • 工厂模式在数据访问层应用
    • 工厂模式定义一个用于创建对象的接口,让子类决定实例化哪一个类
    • 工厂方法使一个类的实例化延迟到其子类。这里可能会处理对多种数据库的操作,因此,需要首先定义一个操纵数据库的接口,然后根据数据库的不同,由类工厂决定实例化哪个类。

4. 物联网层次架构设计

  • 分为三层:
    • 感知层:识别物体、采集信息。
    • 网络层:用于传递信息和处理信息。网络层包括通信网与互联网的融合网络、网络管理中心、信息中心和智能处理中心等。
      • 传输和预处理采集信息
      • 云计算平台:感知数据的存储、分析平台
    • 应用层 实现广泛智能化
      • 利用分析处理后的感知数据,提供服务。
      • 解决信息处理和人机交互问题。

5. 层次式架构案例 网上商店PetShop

  • 数据访问层采用了面向接口的编程,脱离了对具体数据库依赖,便于数据库迁移

6. 物联网层次架构案例 电子小票服务系统

posted @ 2024-09-10 09:03  ldfm  阅读(9)  评论(0编辑  收藏  举报