问题标签 [composition]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
4885 浏览

coldfusion - ColdFusion:从同一组件调用 cffunction

这个问题可能很幼稚,因为我是 ColdFusion 编程的新手。

我有一个任务,我f1在组件内编写了一个函数。我想从同一个组件中定义的f1另一个函数调用。f2

f2在 cfm 文件中被调用。

我的问题 - 这是正确的方法吗?我可以调用f1fromf2吗?

我也可以合并f1f2中,但我想保留f1为一个单独的函数。

0 投票
20 回答
416012 浏览

oop - 关联,聚合和组合之间有什么区别?

关联、聚合和组合之间有什么区别?请在执行方面进行说明。

0 投票
5 回答
391 浏览

c++ - 管理类的聚合/组合成员之间的关系

我正在使用聚合和组合为模拟创建实体。

在以下 C++ 示例中:

在上面的例子中,一辆汽车由一个发动机和一组驾驶控制(按组合)组成。一辆车还必须有一个司机(通过聚合)。

但这只是解释了层次关系——驾驶员属于汽车,引擎和控件也属于汽车。但是这些成员也都相互关联——驾驶员必须对控件执行操作,控件必须对引擎执行操作。这些关系也可以在多个方向上发挥作用——发动机可能会熄火并导致控制装置失灵,或者控制装置可能会疯狂旋转并伤害驾驶员?如果驾驶员不喜欢发动机的声音并离开汽车怎么办?这些关系如何运作?

我正在从经常与其他对象交互的许多不同对象中合成许多不同的实体,并且对如何以设计的方式管理这些关系感兴趣。

谢谢你!

编辑:

正如回复所暗示的,管理此问题的一种方法是将汽车指向驾驶员,并为驾驶员提供指向汽车的指针等。这很有意义并解决了这个具体的例子。然而,在设计意义上,这增加了驾驶员的责任,这个对象的任务是跟踪它属于哪辆车,但这肯定是容器的责任来跟踪哪些对象属于一起?同样,让 CCar 负责管理这些关系会将 CCar 变成一个 blob。是否有处理这些关系的设计解决方案?

0 投票
5 回答
478 浏览

php - PHP5 类:继承一个组合类?

我试图让以下工作,但我不知所措......

我想做的是在 Foo 类中创建 SomethingElse 类的实例。这使用=&. 但是当我用类Bar扩展类Foo时,我认为子类继承了父类的所有数据属性和方法。但是,这似乎$this->somethingelse在子类 Bar 中不起作用:

那么,就不能这样继承吗?如果我想在那里使用它,我应该从类 Bar 中创建一个新的类 SomethingElse 实例吗?还是我错过了什么?

在此先感谢您的帮助。

0 投票
7 回答
485 浏览

inheritance - 应用程序架构中具体继承的主要竞争设计模式是什么?

偶尔我会遇到关于继承在企业应用程序架构中“过时”的评论,但我没有看到描述竞争理论的文章的链接。此外,如果应用程序已经构建而不是从头开始,那么在实现上是否存在差异?我认为这可能与严重依赖接口有关,但我不确定。

0 投票
1 回答
5637 浏览

c# - 如果在目录中找到新的 DLL,则在 DirectoryCatalog 上调用 Refresh() 会引发 ChangeRejectedException

我正在试验MEF并创建了一个测试程序来调用实现某些给定接口的“插件”,如下所示:

我创建了一个示例控制台程序,它从它自己的程序集中加载“插件”,如果找到的话,从一个放置额外 DLL 的目录中加载。无论插件目录为空(仅调用“本机”插件)还是具有兼容的 DLL,程序都可以正常工作。但是...如果在循环迭代之间添加了一个新的 DLL,DirectoryCatalog 的 Refresh() 方法会抛出一个 ChangeRejectedException,解释如下:

组成保持不变。由于以下错误,更改被拒绝: 合成产生了单个合成错误。下面提供了根本原因。查看 CompositionException.Errors 属性以获取更多详细信息。

1) 部分 'MEFTest.Program' 上的不可重组导入 'MEFTest.Program.ProberSet (ContractName="ProbeContract.IProbe")' 阻止了出口的变化。

该程序如下,后面是我尝试添加的 DLL 的代码。我究竟做错了什么?

插件。其他两个插件类似,唯一的区别是它们与主程序位于同一个程序集中:

0 投票
1 回答
469 浏览

wpf - WPF 组合/聚合

我正在寻找有关在大型项目中合成和聚合用户界面的 WPF 最佳实践的文档。

我来自使用 Delphi 和 Winform 的视觉继承世界。我现在尝试很好地复制这种模式,实际上是那些 UI 元素的可重用性。

我愿意接受建议和阅读。

0 投票
5 回答
2058 浏览

uml - UML 表示法 - 聚合/组合与“普通”关联

我最近花了很多时间对我编写的各种 SW 组件进行详细的 UML 设计。回顾我最近完成的内容并将其与我第一次学习 UML 时进行比较,我发现我现在几乎严格使用聚合和组合关系,并且实际上已经放弃了“普通”的非定向/定向关系。当然,我仍然使用泛化和实现,但这些与上面的明显不同,不被认为是这个问题的一部分。

在我看来,聚合/组合意味着“香草”关联的相同含义,等等。聚合和组合自然暗示了一个方向,任何现代 UML 程序仍然允许您在聚合/组合关系上定义多重性,并将动词应用于关系。在那一点上,我认为香草联想没有什么意义。

我知道有些人很难理解聚合和组合之间的区别。早期,我有点难以理解它们的不同之处,我相信混乱是我使用香草联想的部分原因。我现在看到很少或根本没有使用香草关联,实际上不喜欢看到它们被使用,因为我相信它们会留下一些问题(特别是两个对象之间的强或弱生命周期关系)。我相信香草关联的唯一实际用途是当您对手头问题的理解尚未发展到足以确定聚合和组合之间的生命周期差异时。在这种情况下,最好至少显示当你对手头的问题有了更好的理解时,你可以回来并适当地改变它。

长话短说,我相信绝大多数时候人们使用香草联想,它们可以更准确地描述为聚合,有时也可以描述为组合。我的信仰是否大错特错?我错过了什么吗?让我听听!

0 投票
6 回答
739 浏览

c# - OOP:组成样本请建议哪个更好以及为什么

请忽略语言语法,我想在这里只讨论 OOPS。


我将在这里展示 2 个代码片段,每个都是 Composition 的示例(如果我没记错的话)。

问题陈述:我有一个对象,它保存系统中实体的统计信息。让这些统计数据为:

  1. 姓名
  2. 薪水

*这些字段可以是任何东西,我只是以这些为例。所以请不要考虑什么领域是必要的。假设这三个都是必要的。

我创建了一个对应于这些字段的类:

现在我遇到了一种情况,我想要跨时间段获取有关一个人的信息。让我们看看工作流系统中的某个点需要在所有三个阶段向它呈现一个人的信息

  1. 他小时候。
  2. 当他年轻的时候。
  3. 当他退休时。

这里要注意的是,name不会lastName改变,只有薪水可能会改变。正因为如此,我认为我也许可以创建一个可以使用现有对象“统计”的类。

我将提出两种解决方案,请建议哪一种更好以及为什么

代码示例 1

在上面的示例代码中,我没有暴露原始的工资字段,而是为每个时间跨度创建了 3 个新字段。

代码示例 2

0 投票
3 回答
7531 浏览

web-services - 什么是 Web 服务组合?

究竟什么是 Web 服务组合?