Назначение: задает виды создаваемых объектов с помощью экземпляра-прототипа и создает новые объекты путем копирования этого прототипа.

Общая структура решения.

 

 

Prototype – прототип: объявляет интерфейс для клонирования самого себя.

ConсretePrototype – конкретные прототипы: реализуют операцию клонирования себя.

Client – клиент: создает новый объект, обращаясь к прототипу с запросом клонировать себя.

Клиент обращается к прототипу, чтобы тот создал свою копию.