@tujhan
Начинающий программист

Prototype, правильно я понял, что он должен выглядеть примерно так?

Занялся изучением паттернов, Prototype показался мне наиболее разносторонним, везде реализация его разная, нет единого мнения, как должен выглядеть этот паттерн. (Изучаю по книжке 4 челиков) Кто шарит подскажите плиз, как должна выглядеть наглядная реализация этого чуда.
У меня получилось так:
#include <iostream>

class Prototype {
public:
    virtual Prototype* clone() = 0;
    virtual ~Prototype() {};
};

class ConcretePrototype1 : public Prototype {
    int data;
public:
    ConcretePrototype1(int other_data): data(other_data) {}
    ConcretePrototype1(const ConcretePrototype1 &prototype): data(prototype.data) {}
    Prototype* clone() {return new ConcretePrototype1(* this);}
};

class ConcretePrototype2 : public Prototype {
    int data;
public:
    ConcretePrototype2(int other_data): data(other_data) {}
    ConcretePrototype2(const ConcretePrototype2 &prototype): data(prototype.data) {}
    Prototype* clone() {return new ConcretePrototype2(* this);}
};

5d49c2ffacfa6829497216.png
  • Вопрос задан
  • 143 просмотра
Пригласить эксперта
Ответы на вопрос 1
@majstar_Zubr
C++, C#, gamedev
Нет единого мнения по любому паттерну - так и должно быть, ведь они относятся к ООП, а не к конкретным языкам, имеющим свои идеомы.

В целом - да, паттерн "встроен" в язык, т.к. можно определять конструктор копирования, но фактически функция-член clone() не нужна.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы