Наследование синглтона - PullRequest
10 голосов
/ 30 января 2010

Как мне наследовать от одноэлементного класса другие классы, которым требуется такая же функциональность? Будет ли что-то подобное иметь смысл?

Ответы [ 3 ]

13 голосов
/ 30 января 2010

Джон Скит писал об этом некоторое время назад. Можно достичь некоторых преимуществ наследования с помощью Singleton, хотя использование вложенных внутренних классов оставляет желать лучшего. Он не имеет бесконечной расширяемости, это всего лишь метод, позволяющий Singleton выбирать собственную реализацию во время выполнения.

Реально, наследование от Singleton не имеет особого смысла, потому что частью шаблона Singleton является управление экземплярами, и как только у вас уже есть физический экземпляр базового типа, уже слишком поздно переопределять все это в производный тип. Даже если бы вы могли, я подозреваю, что это может привести к разработке, которую сложно понять и еще труднее протестировать / поддерживать.

4 голосов
/ 08 апреля 2011

Вы можете наследовать от синглтона и для «повторного использования» или некоторой тонкой настройки, используя шаблоны (C ++) или обобщенные (C # .NET).

Я разместил в своем блоге ( www.devartplus.com ) серию сообщений на эту тему:

1) Базовое одиночное наследование в C # .NET

2) Потоково-безопасное наследование синглтона в C # .NET

3) Несколько одноэлементных реализаций в C ++

Вам предлагается посетить эти ссылки и поделиться всем своим мнением. Удачи.

0 голосов
/ 30 января 2010

Кто-то не стесняется меня поправлять, но, как я понимаю, и однажды произошла ошибка с этим:

public class BaseClass
{
  protected static List<string> ListOfSomething { get; set; }
}

public class ChildClass
{
  protected static List<int> ListOfSomethingElse { get; set; }
}

public class AnotherChildClass
{
  protected static List<int> ListOfSomethingElse { get; set; }
}

Оба дочерних класса будут иметь одинаковые ListOfSomething, у них не будет своей собственной копии. Один и тот же статический будет распространяться среди всех детей . Это линька синглтон-поведения и наследования. Как сказал шелковистый ... вы просто не должны этого делать, вы, вероятно, натолкнетесь на что-то в этом направлении.

Если вы не говорите о чем-то подобном ... Я не уверен, о каком синглтоне вы говорите, и пример очень помог бы, так как синглтоны используют множество ниш.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...