这篇文章写的很不错:http://tutuge.me/2016/03/29/modular-and-component-summary/
阮一峰老师对软件架构的理解:http://www.ruanyifeng.com/blog/2016/09/software-architecture.html
模块化设计原则:
- 单一职责,意味着一个模块、一个组件只做一件事,绝不多做。
- 正交性,意思是不重复,一个模块跟另一个模块的职责是正交的,没有重叠,组件也是一样。
- 单向依赖,模块之间最多是单向的依赖,如果出现A依赖B,B也依赖A,那么要么是A、B应该属于一个模块,要么就是整体的拆分有问题。一个完整的软件系统的模块依赖应该是一张有向无环图。(当然这是最终理想=。=)
- 紧凑性,模块、组件对外暴露的接口、属性应该尽可能的少,接口的参数个数也要少。
- 面向接口,模块、组件对外提供服务时最好是面向接口的,以便后期可以灵活的变更实现。