同事死后调解员会死吗?



我有这个问题与调解器设计模式有关,这是GoF的行为类别。我正在尝试使用设计模式原则编写一个 C# 项目。 假设这是一个同事类:

abstract class Colleague
{
Mediator mediator;
// ...
}

还有一个调解员类:

class Mediator
{
List<Colleague> colleagueList;
// ...
}
  • 我们可以有很多同事:c1,c2,c3,...
  • 只有一个调解员
  • :调解员

调解员充当中心点,允许同事之间的沟通。 假设在我们的代码中的某个时刻,某个同事去世了。调解员对象也会死吗?

在 .NET 中,对象仅在不再有对它们的"根"引用时"死亡"(获取垃圾回收((例如,单独的循环引用不计算在内(。因此,只要Colleague被其他内容引用,它引用Mediator就会保留。

仅当不再有对对象的引用时,才会对对象进行垃圾回收。

你说有多个同事和一个调解人,但这个问题有点令人困惑。

书面部分表明(至少在我的解释中(所有同事都提到了一个调解人。如果是这种情况,那么调解员只有在最后一位同事"死亡"(没有更多参考资料(后才会被 GC'ed。

但是,根据您的代码示例,Mediator类本身保存对私有List<Colleague>字段中所有同事的引用。如果是这种情况,则Mediator类的生命周期不依赖于Collegue类的任何(或所有(实例。colleagueList可以为 null 或空,只要某处仍有对它的引用,Meditor实例就会保留。

最新更新