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

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


Цель

Задаёт виды создаваемых объектов с помощью экземпляра-прототипа и создаёт новые объекты путём копированияэтого прототипа.

Проще говоря, это паттерн создания объекта через клонирование другого объекта вместо создания черезконструктор.


Применение

Паттерн используется чтобы:

  • избежать дополнительных усилий по созданию объекта стандартным путем (имеется в виду использованиеключевого слова 'new', когда вызывается конструктор не только самого объекта, но и конструкторы всейиерархии предков объекта), когда это непозволительно дорого для приложения.
  • избежать наследования создателя объекта (object creator) в клиентском приложении, как это делает паттернАбстрактная фабрика.

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

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

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

 1: <?php
 2:
 3:
class Single
 4:
{
 5:     public function 
__clone()
 6:     {
 7:     }
 8: }
 9:
10: class 
Prototype
11:
{
12:     public function 
getClone(Single $single)
13:     {
14:         return clone 
$single;
15:     }
16: }
17:
18:
$prototype = new Prototype();
19:
$singleArray[] = $prototype->getClone(newSingle());

Теги: Прототип, Prototype, Порождающие шаблоны


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

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

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

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

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

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

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

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

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