0 added
0 removed
Original
2026-01-01
Modified
2026-03-10
1
<p>Теги: паттерн, шаблон проектирования, прототип, prototype</p>
1
<p>Теги: паттерн, шаблон проектирования, прототип, prototype</p>
2
<p>Этот порождающий шаблон проектирования задает виды создаваемых объектов посредством экземпляра-прототипа, то есть создание новых объектов происходит путем копирования этого прототипа. В результате появляется возможность уйти от реализации и следовать принципу "программирование через интерфейсы". В роли возвращающего типа указывают интерфейс/абстрактный класс на верху иерархии, причем классы-наследники могут подставить туда наследника, реализующего данный тип.</p>
2
<p>Этот порождающий шаблон проектирования задает виды создаваемых объектов посредством экземпляра-прототипа, то есть создание новых объектов происходит путем копирования этого прототипа. В результате появляется возможность уйти от реализации и следовать принципу "программирование через интерфейсы". В роли возвращающего типа указывают интерфейс/абстрактный класс на верху иерархии, причем классы-наследники могут подставить туда наследника, реализующего данный тип.</p>
3
<p>Если привести пример из жизни, можно вспомнить овечку Долли, которая была клонирована. Углубляться в ее историю нет необходимости, главное, что стоит понять, заключается в том, что все здесь вращается вокруг<strong>клонирования</strong>.</p>
3
<p>Если привести пример из жизни, можно вспомнить овечку Долли, которая была клонирована. Углубляться в ее историю нет необходимости, главное, что стоит понять, заключается в том, что все здесь вращается вокруг<strong>клонирования</strong>.</p>
4
<p>Если сказать все простыми словами, то шаблон проектирования Prototype создает объект, который основан на уже существующем объекте посредством клонирования.</p>
4
<p>Если сказать все простыми словами, то шаблон проектирования Prototype создает объект, который основан на уже существующем объекте посредством клонирования.</p>
5
<p>То есть вы сможете создавать копию уже существующего объекта, а потом выполнять модернизацию с учетом ваших нужд. И это неплохо в том плане, что не надо создавать объект заново.</p>
5
<p>То есть вы сможете создавать копию уже существующего объекта, а потом выполнять модернизацию с учетом ваших нужд. И это неплохо в том плане, что не надо создавать объект заново.</p>
6
<p>Теперь давайте обратимся к коду. В PHP реализовать все это можно посредством<strong>clone</strong>:</p>
6
<p>Теперь давайте обратимся к коду. В PHP реализовать все это можно посредством<strong>clone</strong>:</p>
7
<p>Далее можно выполнить клонирование так:</p>
7
<p>Далее можно выполнить клонирование так:</p>
8
<p>Кроме того, для изменения клонирующего поведения вы можете задействовать волшебный метод ___clone_.</p>
8
<p>Кроме того, для изменения клонирующего поведения вы можете задействовать волшебный метод ___clone_.</p>
9
<h2>Когда применять?</h2>
9
<h2>Когда применять?</h2>
10
<p>Паттерн пригодится, если вам нужен объект, который похож на уже существующий объект. Или же, когда создание дороже клонирования.</p>
10
<p>Паттерн пригодится, если вам нужен объект, который похож на уже существующий объект. Или же, когда создание дороже клонирования.</p>
11
<p>Напоследок вы можете ознакомиться с примером реализации шаблона "Прототип" на<a>Java</a>.</p>
11
<p>Напоследок вы можете ознакомиться с примером реализации шаблона "Прототип" на<a>Java</a>.</p>
12
<p><em>По материалам статьи<a>"Design Patterns for Humans"</a>.</em></p>
12
<p><em>По материалам статьи<a>"Design Patterns for Humans"</a>.</em></p>
13
13