Прототип
Prototype
Тип порождающий
Описан в Design Patterns Да

Прототип, (англ. Prototype) — порождающий шаблон проектирования.

Назначение

править

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

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

Применение

править

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

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

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

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

Примеры

править

Пример на Python

править

Пример на C++

править

Пример на Java

править

Пример на Scala

править

Пример на C#

править

Пример на PHP

править

[1]

Пример на Ruby

править

Пример на VB.NET

править

Пример на Delphi

править

Пример на CoffeeScript

править

Пример на Io

править

Литература

править
  • Э. Гамма, Р. Хелм, Р. Джонсон, Дж. Влиссидес. Приемы объектно-ориентированного проектирования. Паттерны проектирования = Design Patterns: Elements of Reusable Object-Oriented Software. — СПб.: «Питер», 2007. — С. 366. — ISBN 978-5-469-01136-1. (также ISBN 5-272-00355-1)

См. также

править

Примечания

править
  1. Прототип на PHP. refactoring.guru. Дата обращения: 18 июня 2023. Архивировано 18 июня 2023 года.

Ссылки

править

📚 Artikel Terkait di Wikipedia

Mocha (фреймворк)

ждать завершения. describe('Foo', function(){ describe('#bar()', function(){ it('should work without error', function(done){ var foo = new Foo(128); foo

Николай II

He was neither a great captain nor a great prince. He was only a true, simple man of average ability, of merciful disposition, upheld in all his daily

SCORM

Тем временем консорциум IMS Global в 2003 году выпустил спецификацию IMS Simple Sequencing (IMS SS), содержащую требования к описанию последовательностей

Цепочка обязанностей

public function __construct($mask) { $this->mask = $mask; } public function setNext(Logger $log) { $this->next = $log; return $log; } public function message($msg

Lua

Историческими родителями языка были языки конфигурирования и описания данных SOL (Simple Object Language) и DEL (Data-Entry Language), они были независимо разработаны

Хокинг, Стивен

many and various supporters, an idea whose time has come. The deceptively simple notion of offering every citizen a regular payment without means testing

Асфиксия инертным газом

cellular level. ... Simple asphyxiants are gases that are physiologically inert. They do not suppress cardiac output or alter the function of the hemoglobin

AHDL

functions must be prototyped % % PROTOTYPE: FUNCTION COUNTER (CLK) RETURNS (CNTOUT[7..0]); % % function declaration, where inputs, outputs, and bidirectional