Занялся изучением паттернов, 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);}
};