Java应用架构读书笔记(5):处理复杂性

随着系统的演化,系统的复杂性会越来越大。每一次发布,系统的大小就会增加,从而复杂性也会增加。 Spring框架在2003年最早的发布版本中有一万多行代码,到了2.5版本时,代码数量大概翻了六倍。 系统维护和演化的开销大概站了总开销的百分之90以上。 技术债务是Ward Cunningham提出的一个隐喻,用来描述为了赶进度或者满足用户期望所做的设计上的折中。 债务需要及时的处理,否则系统的设计将会持续的腐化,太多的技术债务的积累最终会使得系统崩溃。


模式4:Acyclic Relationships

模块关系中不能存在循环依赖. 当在两个系统模块之间定义关系的时候,它们的耦合度会增加。因为模块需要互相协作来完成任务,所以一定程度的耦合是必须的。但是,循环依赖需要避免。如何判定一个依赖是循环的呢?对于一个模块A,将A直接或者间接依赖的所有模块依次加入集合中,如果发现A再次被加入集合,那么说明模块结构中存在循环依赖。