Шаблон проектирования Prototype | OTUS
🚀 OTUS Fest 2021
Бесплатная образовательная онлайн-конференция для IT-специалистов.
Подробнее

Курсы

Программирование
Backend-разработчик на PHP
-9%
Алгоритмы и структуры данных
-9%
Team Lead
-6%
Архитектура и шаблоны проектирования Разработчик IoT
-13%
C# Developer. Professional
-9%
HTML/CSS
-11%
C# ASP.NET Core разработчик
-5%
Kotlin Backend Developer
-8%
iOS Developer. Professional
-8%
Java Developer. Basic C++ Developer. Professional Web-разработчик на Python MS SQL Server Developer Android Developer. Basic Разработчик программных роботов (RPA) на базе UiPath и PIX Microservice Architecture Unity Game Developer. Basic Разработчик голосовых ассистентов и чат-ботов React.js Developer Node.js Developer Интенсив «Оптимизация в Java» Супер - интенсив по паттернам проектирования Супер - интенсив по Kubernetes JavaScript Developer. Basic Unity Game Developer. Professional Супер-интенсив Azure
Инфраструктура
Экспресс-курс «IaC Ansible»
-10%
Administrator Linux.Basic
-10%
Мониторинг и логирование: Zabbix, Prometheus, ELK
-10%
Экспресс-курс «CI/CD или Непрерывная поставка с Docker и Kubernetes»
-30%
Administrator Linux. Professional
-6%
Дизайн сетей ЦОД
-13%
NoSQL Основы Windows Server MS SQL Server Developer Инфраструктурная платформа на основе Kubernetes Cloud Solution Architecture Highload Architect Разработчик голосовых ассистентов и чат-ботов VOIP инженер Супер-практикум по работе с протоколом BGP Супер - интенсив по паттернам проектирования Супер - интенсив по Kubernetes Супер-интенсив "Tarantool"
Специализации Курсы в разработке Подготовительные курсы
+7 499 938-92-02

Шаблон проектирования Prototype

Этот порождающий шаблон проектирования задает виды создаваемых объектов посредством экземпляра-прототипа, то есть создание новых объектов происходит путем копирования этого прототипа. В результате появляется возможность уйти от реализации и следовать принципу «программирование через интерфейсы». В роли возвращающего типа указывают интерфейс/абстрактный класс на верху иерархии, причем классы-наследники могут подставить туда наследника, реализующего данный тип.

Если привести пример из жизни, можно вспомнить овечку Долли, которая была клонирована. Углубляться в ее историю нет необходимости, главное, что стоит понять, заключается в том, что все здесь вращается вокруг клонирования.

Если сказать все простыми словами, то шаблон проектирования Prototype создает объект, который основан на уже существующем объекте посредством клонирования.

То есть вы сможете создавать копию уже существующего объекта, а потом выполнять модернизацию с учетом ваших нужд. И это неплохо в том плане, что не надо создавать объект заново.

Теперь давайте обратимся к коду. В PHP реализовать все это можно посредством clone:

Screenshot_1-1801-84ba73.png

Далее можно выполнить клонирование так:

Screenshot_2-1801-397c83.png

Кроме того, для изменения клонирующего поведения вы можете задействовать волшебный метод ___clone_.

Когда применять?

Паттерн пригодится, если вам нужен объект, который похож на уже существующий объект. Или же, когда создание дороже клонирования.

Напоследок вы можете ознакомиться с примером реализации шаблона «Прототип» на Java.

По материалам статьи «Design Patterns for Humans».

Не пропустите новые полезные статьи!

Спасибо за подписку!

Мы отправили вам письмо для подтверждения вашего email.
С уважением, OTUS!

Автор
0 комментариев
Для комментирования необходимо авторизоваться