命名此模式

时间:2009-02-17 15:47:32

标签: design-patterns

经常看到并且经常使用它,想知道它是否有名字?

C#版本:

public class Register
{
    protected Register()
    {
        Register.registry.Add(this);
    }

    public static ReadOnlyCollection<Register> Instances
    {
      get { return new ReadOnlyCollection<Register>(registry); }
    }

    private static List<Register> registry = new List<Register>();
}

如果您无法解决问题,它会保留对实例的跟踪:)

编辑:这只是一个片段,不要对GC问题让人感到兴奋

5 个答案:

答案 0 :(得分:5)

内存泄漏?除非您提供从静态列表“注册表”中明确删除它们的方法,否则不会收集Register的任何实例。

答案 1 :(得分:2)

它不是工厂模式,因为它不涉及使用单独的对象来创建实例。它更像Lazy Initialization Pattern

当您需要控制类的所有实例时使用它。

答案 2 :(得分:1)

它让我想起了string interning

答案 3 :(得分:0)

看起来你正试图跟踪对象的所有实例......为什么?

答案 4 :(得分:0)

Singleton(收藏品)。

这里使用的方式是否构成一种模式或反模式,但是:你是判断者。你是否曾以这种方式使用可继承对象?