前言

SmartConsole是我们的软件项目名称,后续会运行在Windows CE系统的PDA设备上,为变电站检修人员提供近场或远程检测变电站设备运行状态的可视化工具软件。在展示相关数据之前,我们需要通过数据卡从现场的传感器中读取电弧放电电流的数值,然后对实时产生的电流数据进行预处理、存储、数据加工(读取设备端的几十项配置后对数据进行加工,计算出各项指标数据),最终在PDA软件窗口或者HTML页面展示全市各个变电站的运行状态数据。

好啦,我们大概知道SmartConsole的核心模块和功能是什么了,接下来我们应该怎么进行模块划分和设计呢?
研发部经理建议我研究下Java Web的分层设计理念,他之前在IBM做了多年Java后台研发,对Java的设计理念一直很推崇。之前大三匆匆囫囵吞枣看完的《Java编程思想》,在他的推荐下又重读了一遍电子版,收获满满!

接下来,让我们看看Java Web的分层设计吧~

Java Web分层设计

Java Web分层设计是一种软件架构设计模式,旨在将应用程序的不同部分(或层)分离,使得每一层都负责一组特定的任务或功能。这种分层架构有助于降低系统的复杂性,提高可维护性,并促进团队协作。

在Java Web应用中,常见的分层包括:表现层(UI层)、业务逻辑层(服务层)、数据访问层(DAO层)和数据库层。

  1. 表现层(UI层)

    • 负责与用户进行交互,展示信息并接收用户输入。
    • 通常使用HTML、CSS、JavaScript等技术实现前端页面。
  2. 业务逻辑层(服务层)

    • 负责实现应用程序的核心业务逻辑。
    • 调用数据访问层的方法获取或操作数据,并进行必要的业务处理。
    • 在Spring框架中,可以使用Service类来实现业务逻辑层。
  3. 数据访问层(DAO层)

    • 负责与数据库进行交互,执行数据的增删改查操作。
    • 封装了底层的数据访问细节,为业务逻辑层提供统一的数据访问接口。
    • 在Spring框架中,可以使用MyBatis、Hibernate等ORM框架来实现数据访问层。
  4. 数据库层

    • 负责存储和管理应用程序的数据。
    • 可以使用SQL Server、Oracle等。

分层设计的好处包括:

  • 解耦:各层之间相对独立,降低了层与层之间的依赖关系,使得代码更加清晰和易于维护。
  • 可重用性:通过抽象和封装,可以将某一层的代码或功能在其他项目中进行重用。
  • 易于测试:每一层都可以进行独立的单元测试,提高了测试的效率和准确性。
  • 团队协作:不同的团队或开发人员可以专注于不同层的开发,提高了开发效率。

SmartConsole模块设计

  1. 窗口程序

    • 类似Java Web的表现层,负责展示变电站运行数据,支持用户修改配置项等。
  2. 核心层

    • 负责提供窗口程序所需的相关数据
  3. 中间层

    • 数据解析、存储、数据库访问操作
    • 提供作业人员进行操控配置
    • 运行状态检测和告警
  4. 引用层

    • 日志工具、math库
    • 毫秒级别精度的时间库等。