Рубрики
Uncategorized

Определение и анализ использования одноэлементного шаблона в шаблоне проектирования PHP

Автор оригинала: David Wong.

В этой статье мы анализируем одноэлементный шаблон шаблона проектирования PHP. Чтобы поделиться с вами для вашей справки, следующим образом:

Одноэлементный шаблон-это общий шаблон проектирования, который имеет три характеристики

  • 1. Может быть только один экземпляр
  • 2. Вы должны создать этот экземпляр самостоятельно
  • 3. Этот экземпляр должен быть предоставлен другим объектам

Давайте реализуем это на PHP

Следующий звонок на собеседование

say();
*/
//Error reported by the above code: fatal error: call to private signeton:__ construct() 
//I am signleton output after instantiation
$signleton2 = Signleton::getInstance();
$signleton2->say();

Результат операции:

Я-синглтон

Его преимущества и недостатки

преимущество:

  • 1. В одноэлементном режиме существует только один экземпляр активного одноэлементного элемента, и все экземпляры одноэлементного класса получают один и тот же экземпляр. Это предотвращает создание экземпляров других объектов и гарантирует, что все объекты получат доступ к экземпляру
  • 2. Одноэлементный режим обладает определенной масштабируемостью. Когда класс управляет процессом создания экземпляра, класс обладает соответствующей масштабируемостью при изменении процесса создания экземпляра.
  • 3. Обеспечивает контролируемый доступ к уникальному экземпляру.
  • 4. Поскольку в системной памяти есть только один объект, он может экономить системные ресурсы. Когда объекты необходимо часто создавать и уничтожать, одноэлементный режим, несомненно, может повысить производительность системы.
  • 5. Разрешите переменные целевые экземпляры.
  • 6. Избегайте многократного использования общих ресурсов.

Недостатки:

  • 1. Это неприменимо к измененным объектам. Если объекты одного и того же типа всегда меняются в разных сценариях использования, один экземпляр приведет к ошибкам в данных и не сможет сохранить состояния друг друга.
  • 2. Поскольку в одноэлементном шаблоне нет абстрактного слоя, очень сложно расширить одноэлементный класс.
  • 3. Ответственность одной категории слишком велика, что в некоторой степени нарушает “принцип единой ответственности”.
  • 4. Злоупотребление одним экземпляром приведет к некоторым негативным проблемам. Например, в целях экономии ресурсов проектирование объекта пула подключений к базе данных в качестве класса одного экземпляра может привести к тому, что слишком много программ будут совместно использовать объект пула подключений и переполнят пул подключений; если созданный объект не используется в течение длительного времени, система распознает его как мусор и будет переработан, что приведет к потере состояния объекта.

В этом преимущество и недостаток одноэлементного режима. Из-за разных типов языков одноэлементный режим PHP отличается

Как мы все знаем, PHP-это интерпретируемый язык сценариев, который позволяет интерпретировать и выполнять каждую страницу PHP, а все связанные с ней ресурсы будут переработаны. Другими словами, PHP не может заставить объект находиться в памяти на уровне языка, что аналогично asp.net Java и другие скомпилированные типы отличаются друг от друга. Например, в Java один экземпляр всегда будет существовать в течение всего жизненного цикла приложения, а переменные являются межстраничными и лицом к лицу, что действительно может сделать этот экземпляр уникальным в жизненном цикле приложения. Однако в PHP все переменные, будь то глобальные переменные или статические члены классов, находятся на уровне страницы. Каждый раз при выполнении страницы будут создаваться новые объекты, и они будут опустошены после выполнения страницы, поэтому кажется, что режим одноэлементного PHP не имеет смысла, поэтому я думаю, что режим одноэлементного PHP предназначен только для нескольких сценариев приложений, когда возникает запрос на уровне одной страницы И требуется общий доступ к одному и тому же объектному ресурсу, чтобы быть полезным

такие как

1. Взаимодействие приложений и баз данных

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

2. Информация о конфигурации управления

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

Для получения дополнительной информации о PHP, пожалуйста, ознакомьтесь со следующими разделами: Введение в объектно-ориентированное программирование PHP, навыки работы с массивами PHP, введение в базовый синтаксис PHP, краткое описание операций PHP и использования операторов, краткое описание использования строк PHP, введение в работу с базой данных PHP + MySQL и общие навыки работы с базой данных PHP

Я надеюсь, что эта статья будет полезна для программирования на PHP.