Java 6-1 项目模块化-概念

6-1 项目模块化-概念

一、组件化与模块化

组件化

以功能为依据,解决复用问题

  • 初衷:
    复用的代码,进行工具性的封装

  • 目的:
    复用,解耦

  • 依赖:
    各组件之间独立,低依赖甚至零依赖

  • 架构(纵向):
    位于项目底层,被其他上层依赖

  • 举例:
    Dialog、自定义控件、网络请求、图片加载、工具集、三方库

模块化

以业务为依据,解决复用问题

  • 初衷:
    业务划分,把同一类型业务逻辑进行需求性的封装

  • 目的:
    隔离,高内聚

  • 依赖:
    模块之间无依赖关系,但可以自由组合

  • 架构(横向):
    位于业务层,平级依赖

  • 举例:
    用户模块、订单模块、汽车模块、认证模块


二、模块化思想

核心:每个模块作为一个独立的子项目,子项目之间不要有相互依赖(基础模块除外)

  1. 多人同步开发的情况下互不影响
  2. 模块单独维护、升级、调试、测试、打包部署等,实现轻量化
  3. 约定不轻易修改主程序、基础模块、对内接口等
  4. 模块之间实现 高效组合、拆分

三、模块化的优缺点

优点

可维护性高

  • 架构清晰,开发灵活
  • 降低业务耦合度
  • 方便单模块的 调试、升级、维护,调试效率也更高
  • 模块间的高效组合和拆分

缺点

性能损耗大

  • 调用链长,排查代码费力
  • 模块间通信很消耗性能
  • 不要为了模块化而复杂化本来不需要过大架构的项目

四、模块化场景

业务增量包

  • 汽车模块为基础模块,可单独打包发布
  • APP汽车模块、订单模块、财务模块等,都需要依赖汽车模块
  • 任意组合:A+B+C+D、A+B、A+C、B+C

项目部署

  • 更好应对项目 容灾、业务重组、服务器负载 等各方面考研
  • 用户、汽车、交易者、订单、财务,都是独立的系统,部署到不同服务器
  • 微服务,是模块化的一种实现方式
  • SaaS系统,软件即服务/软件服务化,需要用到模块化

五、模块化项目架构设计

  • 综合业务层
  • 拓展业务层
  • 基础业务层
  • 公共库
  • 实体库
  • 基础库

Java 6-1 项目模块化-概念_第1张图片

你可能感兴趣的:(Java从入门到项目开发,java,后端,模块化)