Java应用架构设计:模块化模式与OSGi
上QQ阅读APP看书,第一时间看更新

模块化

在开发和维护方面,大型的软件系统天生就比小型的系统更复杂。模块化会涉及将大型的系统拆分为单独的物理实体,最终会使系统更易于理解。通过理解模块中的行为以及模块间存在的依赖,我们可以更容易地识别和评估变化所带来的连带影响。

例如,要修改具有很少输入依赖的软件模块比那些具有众多输入依赖的模块更容易。同样,具有很少输出依赖的软件模块比那些具有众多输出依赖的模块更易于重用。当设计软件模块时,重用和可维护性是重要的考虑因素,而依赖在其中扮演了重要的角色。但是,依赖并不是唯一的因素。

在设计高质量的软件模块方面,模块内聚也扮演着重要的角色。具有很少行为的模块对于其他的模块并没有做太多有用的事情,因此所提供的价值很小。与此相反,如果模块所做的事情太多将会难以重用,因为它所提供的行为超过了其他模块的期望。当设计模块时,识别合适的粒度等级是很重要的。太细粒度的模块提供的价值很小,可能还需要其他的模块协作才能发挥作用。太粗粒度的模块则会难以重用。

本书中的原则为设计模块化的软件提供了指导。它们探讨了一些方式,这些方式可以让你尽可能地减少模块之间的依赖同时又能最大化模块的重用能力。如果没有面向对象设计的原则和模式,其中的很多原则是无法实现的。你将会发现,对模块化系统所做的物理设计决策经常会影响逻辑设计决策。