知识卡片
组件模块不是类对象的类比
内容
容易以为”组件之于模块,就像对象之于类”,但这个类比是错的。真正的对应是:类和组件类型都定义在模块视图类型,对象和组件实例都在运行时视图类型;但组件类型通常只被实例化一次(如一个用户界面组件),这和类常有很多对象实例不同。更关键的是,大量模块(如数学计算库)根本不会被实例化——只有模块被组织成能在运行时初始化、受限交互时,才更接近”组件类型”,二者概念必须分开。
参考来源
- 位置:《恰如其分的软件架构》第12章《模型元素》12.2节《组件》(源文件:_epub-src/OEBPS/text00115.html)
- 结论依据:原文明确质疑"class:object::module:component"的类比,说明大量模块既不会被实例化也没有运行时存在意义,组件类型则通常只被实例化一次而非常见的多实例情形,因此组件和模块的概念必须分开。
- 原始内容:你可能想知道为什么会同时存在模块和组件:组件不是模块的实例吗?也就是说,class:object::module:component,这样表示对吗?……它有时候是对的,但对很多模块来说并非如此……组件和模块的概念必须分开。