模块化原则倡导利用集中和分解的手法创建高内聚,低耦合的抽象。请参见下面的逻辑结构图。
下面详细说明每种模块化封装缺陷。
拆散的模块化 缺陷
【概念定义】应该集中放在一个抽象中的数据和方法被分散到多个模块中。主要表现形式为:1)类被作为数据容器;2)类中的方法大多数被其他类调用。
【违反原则】模块化原则
【缺陷实例】某个订单系统中,保存订单状态的类和订单的操作方法分散在不同的类中。客户代码甚至可以直接修改订单状态,导致系统崩溃。
【重构建议】将订单状态类和操作类合并,避免客户端直接修改代码。
【现实考虑】在方便同步,数据操作等使用的DTO对象不算作违反模块化原则。
不充分的模块化 缺陷
【概念定义】抽象分解的不彻底,可以通过进一步分解降低系统的复杂度。主要包括两种表现形式:1)臃肿的接口;2)臃肿的实现类。
【违反原则】分解原则,接口隔离原则
【缺陷实例】java.util.Calendar类就过于庞大,可以进一步进行分解和抽象。
【重构建议】对于臃肿的接口,可以按如下方式进行重构。1)如果接口中的部分成员方法关系紧密,就将这些方法提取到一个新的接口中;2)如果接口中的方法可以分成多个组