Русская Википедия:Прототип (шаблон проектирования)

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Шаблон:Другие значения Шаблон:Шаблон проектирования Прототип, (Шаблон:Lang-en) — порождающий шаблон проектирования.

Назначение

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

Проще говоря, это паттерн создания объекта через клонирование другого объекта вместо создания через конструктор.

Применение

Паттерн используется чтобы:

  • избежать дополнительных усилий по созданию объекта стандартным путём (имеется в виду использование конструктора, так как в этом случае также будут вызваны конструкторы всей иерархии предков объекта), когда это непозволительно дорого для приложения.
  • избежать наследования создателя объекта (object creator) в клиентском приложении, как это делает паттерн abstract factory.

Используйте этот шаблон проектирования, когда системe безразлично как именно в ней создаются, компонуются и представляются продукты:

  • инстанцируемые классы определяются во время выполнения, например с помощью динамической загрузки;
  • избежать построения иерархий классов или фабрик, параллельных иерархии классов продуктов;
  • экземпляры класса могут находиться в одном из нескольких различных состояний. Может оказаться удобнее установить соответствующее число прототипов и клонировать их, а не инстанцировать каждый раз класс вручную в подходящем состоянии.
Файл:Prototype.gif

Примеры

Пример на Python

Шаблон:Hider hiding

Пример на C++

Шаблон:Hider hiding

Пример на Java

Шаблон:Hider hiding

Пример на Scala

Шаблон:Hider hiding

Пример на C#

Шаблон:Hider hiding

Пример на PHP

Шаблон:Hider hiding[1]

Пример на Ruby

Шаблон:Hider hiding

Пример на VB.NET

Шаблон:Hider hiding

Пример на Delphi

Шаблон:Hider hiding

Пример на CoffeeScript

Шаблон:Hider hiding

Пример на Io

Шаблон:Hider hiding

Литература

См. также

Примечания

Шаблон:Примечания

Ссылки

Шаблон:Типы шаблонов проектирования