Что делать, если вы знаете, что будет создан только один экземпляр класса - одноэлементный, статический или обычный старый класс? - PullRequest
3 голосов
/ 19 апреля 2011

Бывают случаи, когда существует класс, у которого нет внутренней причины быть одноэлементным или статическим, но при этом не имеет особого смысла создавать более 1 его экземпляра.

Пример, с которым я сталкиваюсь, является объектом заголовка на странице PHP. Это класс homebrew, который помогает управлять скриптами CSS / JS (предотвращает дублирование ссылок и управляет некоторыми зависимостями) и отображает в заголовке несколько общих тегов (мета-тип содержимого, заголовок, скрипт, таблицу стилей ссылок и т. Д.) универсально среди всех представлений, просто для облегчения написания кода.

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

1 Ответ

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

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

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

Подводя итог. Синглтон ПОДТВЕРЖДАЕТ, что создан только один экземпляр. Это следует использовать только тогда, когда важно никогда не иметь более одного экземпляра вашего класса.

...