用于关联,聚合,组合的C#代码

前端之家收集整理的这篇文章主要介绍了用于关联,聚合,组合的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();
    }
}

我的理解是正确的吗?我已经阅读了相互矛盾的文章herehere,所以我真的不确定哪一个要遵循。我的理解似乎符合第一个环节。我觉得第二个链接错误的,或者也许我没有理解它。

你怎么看?

聚合和组合之间的区别是相当模糊的,并且AFAIK与容器被破坏后的“小孩”对象的逻辑存在有关。因此,在集合的情况下,在容器对象被破坏之后,容器中的对象仍然可以存在,而在组合设计的情况下,它们也被消除。一些类比:

> Car对象包含四个Wheel对象。通常,如果你摧毁了汽车(通过调用一些方法来清理它),你也应该在这个过程中摧毁车轮,因为它们不在车外存在(除非你把它们移动到另一个车辆对象)。更实际地,包装输入流的读取器对象也将在内部流自身关闭关闭内部流。这是组合。
一个Person对象包含(拥有)一个Radio对象。如果该人死亡,该电台可能会被另一个人继承,即使没有原始拥有者也可以存在该电台。更实际的是,当列表本身被处理时,包含对象的列表不要求所有对象被排除。这是聚合。

编辑:阅读你的链接后,我会倾向于第一个去,因为它给出了一个类似于我的解释。

另外,关联只是通过对该对象的引用来调用一个方法(发送消息)给另一个对象。

猜你在找的设计模式相关文章