模块与组件设计

时间:2010-04-24 01:17:14

标签: module components

模块与组件设计有什么区别?

7 个答案:

答案 0 :(得分:17)

我想分享一下我对这种差异的想法。

组件和模块都用于指代一组函数或函数的一部分。模块更合乎逻辑,例如:ERP系统中的模块财务,模块HR,模块制造......另一方面,组件更具有物理性。在软件中,它可以是dll,ocx,exe,......

没有标准来衡量哪一个大于另一个。一个组件可以包含模块列表,一个模块也可以包含许多组件。组件用于在技术视图中对系统建模,模块用于在功能视图中对系统进行建模(系统的功能)

答案 1 :(得分:9)

OSGi中有一个参考文献,我认为它解释了差异非常好。

模块与组件 这听起来不像模块和组件有很多共同之处吗?他们都提供 相互之间的东西,彼此消耗的东西。它们也是打包的 作为独立的部署单位。难道这两个不能被认为是同一个 或至少合并?是的,他们可以,但组件和模块服务不同 目的并且有点正交(它们不完全正交,因为 组件由最终可以打包到模块中的代码组成。 模块处理代码打包和代码之间的依赖关系。组件 处理实现更高级别的功能和依赖项 组件之间。组件需要管理它们的代码依赖性,但它们 技术上不需要模块系统来完成它(通常是我们的程序员这样做 通过课程路径)。 一个很好的总结是,您可以将模块视为处理静态代码和 编译时依赖项,而组件处理实例和执行时 的依赖关系。

答案 2 :(得分:8)

组件和模块经常彼此混淆。他们 然而,不一样,而且一个的含义不是 必须坚持另一个。

模块化是将代码划分为相关模块 功能。在许多编程语言中,模块只是一个 源文件。通常的做法是,如果源文件也增长了 大,你可以将它分成两个或多个源文件,并把它们 进入一个新目录;虽然目录通常不称为模块, 这种分解仍然是模块化的。

另一方面,组件可以以不同的方式组成 其他组件形成不同的程序。也就是说,有一个 单独的组成阶段,真实的人决定哪些组成部分 应该一起使用。

我已经看到组件设计被用来强制执行一些艰难的概念 模块化。不推荐这种方法,因为相反 组合的显着开销:组合复杂性增加 具有组件数的多项式。和数量 组件与功能组的数量呈线性增长, 因为一旦你开始使用模块化的组件 分解,你强迫自己随时创建一个新的组件 否则你只需要一个新模块,因为那个新模块 否则不会真正属于任何地方。在100个组件, 构成开销成为一个全职工作,每个组成 迭代将花费几周时间,尽管很多 自动化工作。这显着阻碍了发展。

我最简单的建议是远离组件,如果有的话 可能;众所周知,组件有时可能是必需的。 例如,如果涉及多个独立组织 项目,每个组织的一个组件似乎是可以接受的。

这是一个品味问题,你的分解细粒度 尽管每个人都同意模块化是一件好事,但模块应该是 事情。

如果我知道某个功能的名称,我的编辑很快就会找到它。 另一方面,如果由于某种原因我不知道一个名字 功能(或类别),模块化变得更多 重要。

我希望后一种情况只是一个功能问题 你可以体验使用该程序,所以尽量做到 将程序分解为模块反映了直观 将程序的行为分解为多个区域 功能。

答案 3 :(得分:6)

如果您的意思是模块化模块,那么IEEE标准软件工程术语表中就有一个定义:

  

“模块化是指系统或计算机程序由离散组件组成的程度,以便对一个组件的更改对其他组件的影响最小。”

Dr. Bertrand Meyer提出了五个模块化标准:

  • 问题可分解为子问题
  • 用于生产新系统的模块的可组合性
  • 孤立地理解模块
  • 连续性 - 小变化具有局部效应
  • 保护 - 故障隔离

答案 4 :(得分:3)

对于数字开发和UI考虑(HTML / CSS / JS),我使用这种方法来确保我在做之前保持井井有条和思考。已经证明可以创建更清晰,更有条理的代码,可以很好地转换为少花钱多办事。

在典型的样式表中,我目前正在设置如下:

/* Style Guide – Mobile First
   1. =Setup
   2. =Modules as independent units made up of components
   3. =Components as group of reusable code containing more than one element
   4. =Classes
   5. =Responsive as enhancement
*/
  • 作为独立单元的模块由组件组成:页眉,页脚,部分,文章,旁边等。房屋由许多房间组成,所有房间都有特殊的风格和功能,以创建一个独立的整体。
  • 组件作为一组包含多个元素的可重用代码:无序列表,报价,卡片,表格等。

我写了一个更全面的解释,你可以阅读here

希望这有帮助!

答案 5 :(得分:1)

组件是一个运行时实体(可以由模块组成),独立的可运行单元

模块是一个分区系统,分为实现单元,独立任务分配。模块可能是也可能不是组件

答案 6 :(得分:1)

在我看来,ModuleComponent只是一些功能和资产。

它们之间的区别在于:

组件具有业务逻辑,模块没有。

例如,这个文本输入区域只是一个模块,但是当有一些post api被调用时,它就变成了一个Component。你可以在任何地方放置一个模块,它可以正常工作,但Componet只能在特定的页面或视图中使用(因为它有一个特定的api调用)