Прототип, () — порождающий шаблон проектирования.
Назначение Задаёт виды создаваемых объектов с помощью экземпляра-прототипа и создаёт новые объекты путём копирования этого прототипа. Он позволяет уйти от реализации и позволяет следовать принципу «программирование через интерфейсы». В качестве возвращающего типа указывается интерфейс/абстрактный класс на вершине иерархии, а классы-наследники могут подставить туда наследника, реализующего этот тип.
Проще говоря, это паттерн создания объекта через клонирование другого объекта вместо создания через конструктор.
Применение Паттерн используется чтобы: избежать дополнительных усилий по созданию объекта стандартным путём (имеется в виду использование конструктора, так как в этом случае также будут вызваны конструкторы всей иерархии предков объекта), когда это непозволительно дорого для приложения. избежать наследования создателя объекта (object creator) в клиентском приложении, как это делает паттерн abstract factory.
Используйте этот шаблон проектирования, когда системe безразлично как именно в ней создаются, компонуются и представляются продукты: инстанцируемые классы определяются во время выполнения, например с помощью динамической загрузки; избежать построения иерархий классов или фабрик, параллельных иерархии классов продуктов; экземпляры класса могут находиться в одном из нескольких различных состояний. Может оказаться удобнее установить соответствующее число прототипов и клонировать их, а не инстанцировать каждый раз класс вручную в подходящем состоянии.
Примеры
Пример на Python
Пример на C++
Пример на Java
Пример на Scala
Пример на C#
Пример на PHP
Пример на Ruby
Пример на VB.NET
Пример на Delphi
Пример на CoffeeScript
Пример на Io
Литература (также ISBN 5-272-00355-1)
См. также Прототипное программирование
Примечания
Ссылки Паттерн Prototype (Прототип) — назначение, описание, два варианта реализации (C++), достоинства и недостатки
Категория:Шаблоны проектирования Категория:Статьи с примерами кода Ruby