经常看到并且经常使用它,想知道它是否有名字?
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问题让人感到兴奋
答案 0 :(得分:5)
内存泄漏?除非您提供从静态列表“注册表”中明确删除它们的方法,否则不会收集Register的任何实例。
答案 1 :(得分:2)
它不是工厂模式,因为它不涉及使用单独的对象来创建实例。它更像Lazy Initialization Pattern。
当您需要控制类的所有实例时使用它。
答案 2 :(得分:1)
它让我想起了string interning。
答案 3 :(得分:0)
看起来你正试图跟踪对象的所有实例......为什么?
答案 4 :(得分:0)
Singleton(收藏品)。
这里使用的方式是否构成一种模式或反模式,但是:你是判断者。你是否曾以这种方式使用可继承对象?