Prototyp jest wzorcem projektowym kreacyjnym, w którym tworzy się grupę prototypowych obiektów, na podstawie których klasa fabryka tworzy kopie prototypów i zwraca ich interfejs.
Diagram UML wzorca projektowego prototyp
Przykładowy diagram UML wzorca projektowego prototyp można zobaczyć na poniższej ilustracji. Jak widać interfejs iTankPrototype jest dziedziczony przez dwie klasy:
A1M1_Abrams;
T34
Prototypy tych klas przechowywane są w statycznej zmiennej tablicowej tankPrototype[2], które pod indeksem:
iTankPrototype::TankType::A1M1_Abrams = 0 przechowuje wskaźnik na interfejs obiektu klasy A1M1_Abrams;
iTankPrototype::TankType::T34 = 1 przechowuje wskaźnik na interfejs obiektu klasy T34
W tej samej klasie znajduje się statyczna metoda makeTank, która jako parametr przyjmuje iTankPrototype::TankType. Na podstawie tego parametru tworzona jest kopia prototypowego obiektu i zwracany jego interfejs.
Przykładowa implementacja wzorca projektowego prototyp
Oto przykład implementacji tego wzorca w języku C++: