用于关联,聚合,组合的C#代码
我试图确认我对代码的关联,聚合和组成。所以这里..
汇总:Has-a。它具有另一种类型的现有对象 public class Aggregation { SomeUtilityClass objSC public void doSomething(SomeUtilityClass obj) { objSC = obj; } } 作文:由另一个对象组成 public class Composition { SomeUtilityClass objSC = new SomeUtilityClass(); public void doSomething() { objSC.someMethod(); } } 协会:我有两个意见。 >当一个类与另一个类相关联时。因此,以上都是关联的例子。 public class Association { //SomeUtilityClass objSC /*NO local reference maintained */ public void doSomething(SomeUtilityClass obj) { obj.DoSomething(); } } 我的理解是正确的吗?我已经阅读了相互矛盾的文章here和here,所以我真的不确定哪一个要遵循。我的理解似乎符合第一个环节。我觉得第二个链接是错误的,或者也许我没有理解它。 你怎么看?
聚合和组合之间的区别是相当模糊的,并且AFAIK与容器被破坏后的“小孩”对象的逻辑存在有关。因此,在集合的情况下,在容器对象被破坏之后,容器中的对象仍然可以存在,而在组合设计的情况下,它们也被消除。一些类比:
> Car对象包含四个Wheel对象。通常,如果你摧毁了汽车(通过调用一些方法来清理它),你也应该在这个过程中摧毁车轮,因为它们不在车外存在(除非你把它们移动到另一个车辆对象)。更实际地,包装输入流的读取器对象也将在内部流自身关闭时关闭内部流。这是组合。 编辑:阅读你的链接后,我会倾向于第一个去,因为它给出了一个类似于我的解释。 另外,关联只是通过对该对象的引用来调用一个方法(发送消息)给另一个对象。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |