HTML Diff
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