组件构建原则

组件

组件是软件的部署单元,是可以独立完成部署的最小实体

组件聚合

REP:复用/发布等同原则

组件中的模块和类之间应该有一个共同的主题或者大方向

CCP:共同闭包原则

应将那些会为了一个目的而同时修改的模块与类放到一个组件中

CCP是SRP的组件版

CRP:共同复用原则

将经常共同复用的模块与类放在同一组件中

ISP的组件版

组件耦合

ADP:无依赖环原则

组件不应该出现循环依赖

每周构建:所有人在同一个代码库中开发所有模块的代码,将一周的前几天用来开发新代码,最后一天进行模块依赖冲突的解决

为了避免循环依赖,可以通过划分独立组件进行独立开发及发布,在物理上强制隔离掉

为了消除循环依赖,有两种方法:

  1. 依赖反转改变组件的依赖方向
  2. 将相互依赖的模块提取到一个新模块

_抖动_:随着项目的开发,组件结构会不断扩张变化

自上而下的设计

组件结构图更像是构建性与维护性方面的地图,组件结构图一个重要的目标是如何隔离频繁的组件变更

组件的依赖关系是随着项目的逻辑设计而演进的,无法一开始就设计出完美的组件结构图

组件的依赖关系会随着架构的演进在不断变化

SDP:稳定依赖原则

一个组件只能依赖于比他更稳定的组件

稳定性

与依赖于该模块的模块数量成正比

不稳定性 = 依赖的组件数 / (依赖的组件数 + 依赖其的组件数)

抽象组件

抽象组件通常非常稳定

SAP:稳定抽象原则

一个组件的抽象化程度应与其稳定性程度保持一致

抽象化衡量程度

抽象程度 = 抽象类和接口的数量 / 组件中类的数量