Prototyp To kreacyjny wzorzec projektowy pozwalający klonować obiekty — również te złożone — bez konieczności sprzęgania z ich klasami.
Wszystkie klasy prototyp powinny mieć wspólny interfejs który pozwoli kopiować ich obiekty nawet gdy nie zna się ich konkretnych klas. Obiekty-prototypy mogą tworzyć kompletne kopie, ponieważ pola prywatne danej klasy są dostępne dla innych obiektów tej samej klasy.
Spróbujmy pojąć wzorzec Prototyp na przykładzie odnoszącym się do systemu plików systemu operacyjnego. System plików jest rekursywny: foldery zawierają pliki i inne foldery, które również mogą zawierać pliki i foldery i tak dalej.
Każdy plik i folder można przedstawić stosując interfejs inode. Interfejs inode zawiera także funkcję clone.
Zarówno struktury file jak i folder implementują funkcje print i clone gdyż są one typu inode. Zwróćmy też uwagę, że funkcja clone w file i w folder zwraca kopię — odpowiednio — pliku lub folderu. W momencie klonowania do pola nazwy dołączamy słowo kluczowe “_clone”.