Назовите этот образец - PullRequest
       10

Назовите этот образец

2 голосов
/ 17 февраля 2009

Часто его видели и часто использовали, интересно, есть ли у него имя?

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 ]

5 голосов
/ 17 февраля 2009

Утечка памяти? Экземпляры реестра никогда не будут собираться, если вы не предоставите способ явного удаления их из статического списка «реестр».

2 голосов
/ 17 февраля 2009

Это не фабричный шаблон, поскольку он не предусматривает использование отдельного объекта для создания экземпляров. Это работает больше как Ленивый Образец Инициализации .

Используется, когда вам нужно контролировать все экземпляры класса.

1 голос
/ 17 февраля 2009

Это мне немного напоминает интернирование строк .

0 голосов
/ 18 августа 2009

Синглтон (из коллекции).

является ли способ, которым он используется здесь, образцом или анти-узором: будь судьей. Вы когда-нибудь использовали его таким образом с наследуемыми объектами?

0 голосов
/ 17 февраля 2009

Похоже, вы пытаетесь отслеживать все экземпляры объекта ... почему?

...