加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-14 04:33:09 所属栏目:百科 来源:网络整理
导读:我试图确认我对代码的关联,聚合和组成。所以这里.. 汇总:Has-a。它具有另一种类型的现有对象 public class Aggregation{ SomeUtilityClass objSC public void doSomething(SomeUtilityClass obj) { objSC = obj; }} 作文:由另一个对象组成 public class 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对象。通常,如果你摧毁了汽车(通过调用一些方法来清理它),你也应该在这个过程中摧毁车轮,因为它们不在车外存在(除非你把它们移动到另一个车辆对象)。更实际地,包装输入流的读取器对象也将在内部流自身关闭时关闭内部流。这是组合。
一个Person对象包含(拥有)一个Radio对象。如果该人死亡,该电台可能会被另一个人继承,即使没有原始拥有者也可以存在该电台。更实际的是,当列表本身被处理时,包含对象的列表不要求所有对象被排除。这是聚合。

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读