Когда НЕ следует использовать шаблон Singleton? (Помимо очевидного)

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

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

Банда четырех заявляет, что вы захотите использовать синглтон, когда:

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

Эти моменты, безусловно, примечательные, но не те практические, которые я ищу.

Есть ли у кого-нибудь набор правил или предостережений, которые вы используете, чтобы оценить, действительно ли вы действительно уверены, что хотите использовать Singleton?

46
задан Andrew Barber 2 November 2010 в 00:30
поделиться