
1. 组件开发的核心目的是实现代码的重用,其功能通常是单一或独立的。在系统的代码结构中,组件位于基础层,被其他代码段依赖,这表明组件化是沿着垂直分层的方向发展的。
2. 模块开发则侧重于将具有相似功能的代码集中在一起,因此模块通常涉及更复杂的功能,并且通常与业务相关。模块之间存在依赖关系,但这种依赖往往是在同一级别的业务逻辑之间相互调用。
3. 在代码组织层面,组件化开发表现为垂直分层,而模块化开发则是水平分块。因此,模块化开发并不强制要求组件化。换句话说,可以仅进行模块化开发而不进行组件化开发。如果这样做,代码将不考虑重用性,只是将相关业务代码进行聚合,导致不同模块之间存在大量重复代码。这种做法虽然实现了模块化,但在实践中并不常见。
4. 与组件和模块概念相近的是一对术语:库和框架。库倾向于表示代码的集合,与分层概念相关,因此与组件化相对应。框架则代表具有结构化代码,适用于模块化。框架是基础设施,而模块化是构建其上的内容。
5. 例如,ReactiveCocoa 作为一个库,提供了响应式编程的能力,而基于 ReactiveCocoa 实现的 MVVM 具体架构则被称为框架,因为框架内包含了架构思想。