个人理解,模块就是对功能的分块,在面向对象的语言中,类和对象构成了系统的逻辑结构,然后我们把这些抽象放
入模块中,形成了系统的物理架构。
“模块化就是将程序划分为一些模块,模块可以独立编译,但却又与其他模块有一定的联系。” 模块可以认为是一种物
理容器 ,我们在其中声明逻辑设计的类和对象。
对于很小的系统而言,开发者可能将所有的类和对象都声明在同一个包中,但对于更好的是软件是将逻辑上相关的类
和对象放在同一个模块中,只暴露出其他模块必须看到的元素。实际上,开发者需要考虑的是对类和对象的物理打
包。
分解为模块的总体目标是通过允许模块独立地设计和修改,从而减少软件的成本……每个模块的结构都应该足够简
单,这样它就能被完全理解。应该能够在不知道其他模块的实现方法,并不影响其他模块的行为的情况下,修改某个
模块的实现。修改设计的容易程度应该能够满足需要变更的可能性。
设计模块时,模块的接口应该尽可能的小,而又满足其他用到它的模块的需要,将尽可能多的东西隐藏在模块的实现
中。
每个数据结构对于一个模块来说都是私有的,它可能被同一模块下的一个或几个程序访问,但模块外的程序不能访问
它。任何其他程序,如果需要保存在一个模块的数据结构中的信息,只能通过调用这个模块的程序获得。尽可能的创
造出高内聚(将逻辑上相关的抽象放在一起),低耦合(减少模块间的依赖关系)的模块。
模块化就是将系统分解为一组高内聚、低耦合的模块。通常,开发团队也是根据模块来分配工作的,所以在定义模块
边界时,要尽量减少开发组织中不同部分之间的接口。