Java应用架构读书笔记(2):模块的定义

 由  罗俊杰 发布

市面上一直不缺少介绍面向对象设计和面向服务架构相关概念和技术的书籍,但是专门有关模块化的书籍却非常少。

软件模块是什么?

一个模块可以认为是一个“软件块”(chunk of software),但是适用于这一定义的还可以是类,包,构件,服务,甚至是应用。

模块的精确定义:

一个软件模块是一个可部署的、可管理的、本地化复用的、可组装的且无状态的软件单元,为消费者提供了简明的接口。

定义详解

  • 可部署

模块是物理的部署单元,相比类和包具有更大的粒度

  • 可管理

在运行时,模块能够安装、卸载和刷新。在开发时,系统划分为模块能够改进构建效率,支持开发者独立的开发自治的模块,规划模块边界的开发工作量

  • 可测试

一个模块可以被独立的测试

模块是一个过程内(intraprocess)复用的单元,与应用或者服务相比,模块不是一种分布式计算技术,虽然SOA的相关原则可以应用到模块的设计当中。模块一般通过本地化的调用来实现复用,模块暴露的操作总是通过直接的方法调用来使用。

  • 可组装

模块可以由其他模块组装而成。

  • 无状态

模块是无状态的,一个模块只有一个实例。模块中的类可以有状态,可以进行实例化。模块本身可以认为没有“实例化”的概念

总结

Java平台中模块化单元的最好选择是Jar文件。

查看评论