【问题标题】:Terminology: What's the difference between a class and a component?术语:类和组件有什么区别?
【发布时间】:2010-11-19 05:18:22
【问题描述】:

在 OO 范式中,我们选择使用类,因为它们可以帮助我们分解系统,并提供很好的附带好处,例如封装、职责分离、继承、模块化等。

如果我们在组件级别查看软件系统,我们是否可以简单地以相同的概念方式对待组件,即组件只是一个“大类”?还是还有更多?

在设计组件时必须考虑哪些额外的注意事项?

编辑:

我知道类和组件是不同的东西。我也明白一个组件可能包含许多类,每个类都有自己的角色和职责。

我看看能不能更好地解释一下自己。

  • 类让我们能够解决更大的问题,因为它们让我们能够更抽象地思考和设计。
  • 有一些规则和技术可以确定如何分解数据和功能并将其分配给类。

这似乎与组件设计的情况非常相似,只是在更高的抽象层次上。用于确定需要哪些类的技术是否可以扩展到组件,和/或是否存在其他不适用于类抽象级别的影响高级系统设计的因素?

【问题讨论】:

标签: oop architecture terminology


【解决方案1】:

如何使用项目阶段或角色来区分它们?

例如,组件是设计时单位(系统架构师、设计师),而类是实施时单位(程序员)。因此,设计师谈论组件(或子系统或模块,架构图中的高级框),而程序员谈论组件和类(实现组件)。

在此视图下,组件由一个或多个类实现。

【讨论】:

    【解决方案2】:

    我经常想到 UML 意义上的组件(参见 Wikipedia 描述),它代表“系统的模块化部分”。从这个意义上说,它往往代表比类更大的功能,实际上可以由多个类组成。

    在设计组件时我会考虑:

    • 如何重新使用它。特别是有哪些用例可以保证将某些东西作为组件而不是定制代码来实现(作为一名毕业生,我曾经让所有东西都可重复使用!)
    • 提供合理的接口,在某些情况下提供额外的简化接口,可能使用Facade 模式。

    希望对您有所帮助。

    【讨论】:

      【解决方案3】:

      在这个(假设的)上下文中,可以将组件视为一系列类。

      但是,根据您使用的技术,组件可能不仅仅是一组类。 即它们可能具有其他属性和功能,这些属性和功能不属于构成它们的类的一部分。 例如COM+ 组件。

      所以这真的取决于具体情况。

      【讨论】:

        【解决方案4】:

        根据UML v2 specification

        8.3.1 组件(来自 BasicComponents、PackagingComponents)

        一个组件 表示系统的模块化部分 封装其内容和 其表现形式是可替代的 在其环境中。

        一个组件 定义其行为 提供和需要的接口。作为 这样,一个组件作为一个类型 其一致性由这些定义 提供和需要的接口 (包括它们的静态 以及动态语义)。一 因此组件可以被替换 仅当两者是类型时才由另一个 符合的。较大的一块 系统的功能可能是 通过重用组件组装为 包含组件中的部分或 组件的组装和接线 一起他们需要和提供 接口。

        当你使用这个定义时,组件似乎都是关于Inversion Of Control

        以.NET框架为例,IComponent接口确实提供了IComponent.Site.GetService通过服务提供者模式实现控制反转。更轻量级的替代方案是依赖注入。

        【讨论】:

          【解决方案5】:

          嗯?

          “文件上传”组件可能包含很多类:接收文件的页面、保存文件的类等。

          【讨论】:

          • 也许我的问题并不清楚。我现在已经澄清了:)
          【解决方案6】:

          组件是类的子系统。提供对象接口的基本低级蓝图,而组件为其添加了一些功能。

          【讨论】:

            猜你喜欢
            • 2020-01-29
            • 2020-03-17
            • 1970-01-01
            • 2020-12-08
            • 1970-01-01
            • 1970-01-01
            • 2020-03-04
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多