Назначение: задает виды создаваемых объектов с помощью экземпляра-прототипа и создает новые объекты путем копирования этого прототипа.
Общая структура решения.
Prototype – прототип: объявляет интерфейс для клонирования самого себя.
ConсretePrototype – конкретные прототипы: реализуют операцию клонирования себя.
Client – клиент: создает новый объект, обращаясь к прототипу с запросом клонировать себя.
Клиент обращается к прототипу, чтобы тот создал свою копию.