Паттерн проектирования Lazy initialization (Отложенная инициализация) на PHP

Отложенная (ленивая) инициализация (англ. Lazy initialization). Приём в программировании, когда некотораяресурсоёмкая операция (создание объекта, вычисление значения) выполняется непосредственно перед тем, какбудет использован её результат. Таким образом, инициализация выполняется «по требованию», а незаблаговременно. Аналогичная идея находит применение в самых разных областях: например, компиляция «на лету»и логистическая концепция «Точно в срок».

Частный случай ленивой инициализации — создание объекта в момент обращения к нему — является одним изпорождающих шаблонов проектирования. Как правило, он используется в сочетании с такими шаблонами какФабричный метод, Одиночка и Заместитель.


Плюсы

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

Минусы

  • Невозможно явным образом задать порядок инициализации объектов;
  • возникает задержка при первом обращении к объекту.

 1: <?php
 2:
 3:
class LazyURL
 4:
{
 5:     protected 
$_stringUrl;
 6:     protected 
$_domain;
 7:
 8:     public function 
__construct($stringUrl)
 9:     {
10:         
$this->_stringUrl $stringUrl;
11:     }
12:
13:     public function 
getDomain()
14:     {
15:         if (empty(
$this->_domain)) {
16:             
$this->_domain parse_url(
17:                 
$this->_stringUrl,
18:                 
1
19:             
);
20:         }
21:         return 
$this->_domain;
22:     }
23: }
24:
25:
$url = new LazyURL('https://google.com');
26: echo 
$url->getDomain();//google.com

Теги: Отложенная инициализация, Lazy initialization, Порождающие шаблоны


Похожие статьи

Паттерн проектирования Builder (Строитель) на PHP

Паттерн проектирования Abstract Factory (Абстрактная фабрика) на PHP

Паттерн проектирования Singleton (Одиночка) на PHP

Паттерн проектирования Object pool (Объектный пул) на PHP

Паттерн проектирования Resource Acquisition Is Initialization - RAII (Получение ресурса есть инициализация) на PHP

Паттерн проектирования Multiton (Пул одиночек) на PHP

Паттерн проектирования Prototype (Прототип) на PHP

Паттерн проектирования Factory Method (Фабричный метод) на PHP