Хорошо ли, что каждый класс PHP реализует шаблон Singleton? - PullRequest
1 голос
/ 23 марта 2010

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

Ответы [ 6 ]

10 голосов
/ 23 марта 2010

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

Взять, к примеру, смоделировать список людей. Если вы решите создать класс Person, то вам не будет разрешено иметь более одного человека в вашей модели.

8 голосов
/ 23 марта 2010

Если все ваши классы одиночные, зачем использовать классы?

Синглтоны полезны в некоторых случаях, но имеют тенденцию к чрезмерному использованию. Если вы можете избежать неприятностей с синглетонами, то вам, вероятно, не нужны классы для их предполагаемого объектно-ориентированного использования. Тем не менее, они могут быть полезны для модульности кода.

В целом, классы наиболее полезны, когда у вас есть несколько экземпляров класса. Классы - это чертежи объектов, поэтому вы можете создавать множество объектов с похожим поведением, но, как правило, с другим внутренним состоянием.

Итак, если все ваши классы - синглтоны, я бы отступил назад и задал пару вопросов:

  • Вам нужны занятия?
  • Правильно ли вы думаете о том, как ваше программное обеспечение моделирует проблему, которую вы пытаетесь решить?
1 голос
/ 23 марта 2010

Это кажется очень плохой идеей. Я бы порекомендовал хранить любые необходимые данные между запросами в сеансе (если для пользователя) или в кэше (если для сервера). Что касается использования памяти, это не должно иметь , что большая разница.

1 голос
/ 23 марта 2010

Существует простое правило: если определенно уверен, что класс будет использоваться только один раз, реализуйте Singleton. Если его нужно использовать более одного раза, не делайте этого.

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

0 голосов
/ 20 мая 2011

Возможно, просто не было бы ООП-дизайна. ООП означает , что означает , чтобы упростить структурирование с 3 основными свойствами: наследование (т.е. общие классы имеют один и тот же интерфейс), полиморфизм (т.е. создание подклассов) и инкапсуляция (т. Е. Использование подхода черного ящика к вашим объектам).

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

0 голосов
/ 23 марта 2010

На самом деле это (в сочетании с фабрикой), например, Kohana 3 Framework;

он использует комбинацию синглтон / фабрика, где это возможно.

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