Подтвердить что ты не робот

Какая точка дизайна шаблона Prototype?

Итак, я изучаю шаблоны дизайна в школе. Сегодня мне рассказали о шаблоне дизайна 'Prototype'.

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

Не работает ли этот шаблон в тех же кругах, что и проблема "курица или яйцо"? Так как шаблон Prototype по сути является просто клонирующим объектом, в какой-то момент исходный объект должен быть создан сам (т.е. Не клонирован). Это означало бы, что мне нужно иметь существующую копию каждого объекта, который я хочу клонировать, уже готового к клонированию?

Может ли кто-нибудь объяснить, что такое использование этого шаблона?

4b9b3361

Ответ 1

Шаблон Prototype - это шаблон создания, основанный на клонировании предварительно сконфигурированного объекта. Идея заключается в том, что вы выбираете объект, который настроен как по умолчанию, так и в шале определенного конкретного прецедента, а затем вы клонируете этот объект и настраиваете его на точные нужды.

Образец полезен для удаления кучи кода шаблона, когда требуемая конфигурация будет обременительной. Я думаю о Prototypes как о предустановленном объекте, где вы сохраняете кучу состояния как новую отправную точку.

Ответ 2

Шаблон прототипа имеет некоторые преимущества, например:

  • Он устраняет (потенциально дорогостоящие) издержки инициализации объекта
  • Это упрощает и может оптимизировать использование, когда несколько объектов одного типа будут иметь в основном одни и те же данные

Например, скажем, ваша программа использует объекты, созданные из данных, обработанных из пестрой неизменной информации, полученной по сети. Вместо того, чтобы извлекать данные и повторно обрабатывать их каждый раз, когда создается новый объект, шаблон прототипа может использоваться для простого дублирования исходного объекта всякий раз, когда требуется новый.

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

Ответ 3

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

и

невозможно построить из существующего объекта, например [Building Object using Network Stream] или

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

Ответ 4

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