Шаблон проектирования Prototype
Этот порождающий шаблон проектирования задает виды создаваемых объектов посредством экземпляра-прототипа, то есть создание новых объектов происходит путем копирования этого прототипа. В результате появляется возможность уйти от реализации и следовать принципу «программирование через интерфейсы». В роли возвращающего типа указывают интерфейс/абстрактный класс на верху иерархии, причем классы-наследники могут подставить туда наследника, реализующего данный тип.
Если привести пример из жизни, можно вспомнить овечку Долли, которая была клонирована. Углубляться в ее историю нет необходимости, главное, что стоит понять, заключается в том, что все здесь вращается вокруг клонирования.
Если сказать все простыми словами, то шаблон проектирования Prototype создает объект, который основан на уже существующем объекте посредством клонирования.
То есть вы сможете создавать копию уже существующего объекта, а потом выполнять модернизацию с учетом ваших нужд. И это неплохо в том плане, что не надо создавать объект заново.
Теперь давайте обратимся к коду. В PHP реализовать все это можно посредством clone:
Далее можно выполнить клонирование так:
Кроме того, для изменения клонирующего поведения вы можете задействовать волшебный метод ___clone_.
Когда применять?
Паттерн пригодится, если вам нужен объект, который похож на уже существующий объект. Или же, когда создание дороже клонирования.
Напоследок вы можете ознакомиться с примером реализации шаблона «Прототип» на Java.
По материалам статьи «Design Patterns for Humans».