프로토타입은 객체들(복잡한 객체 포함)을 그의 특정 클래스들에 결합하지 않고 복제할 수 있도록 하는 생성 디자인 패턴입니다.
모든 프로토타입 클래스들은 객체들의 구상 클래스들을 알 수 없는 경우에도 해당 객체들을 복사할 수 있도록 하는 공통 인터페이스가 있어야 합니다. 프로토타입 객체들은 전체 복사본들을 생성할 수 있습니다. 왜냐하면 같은 클래스의 객체들은 서로의 비공개 필드들에 접근할 수 있기 때문입니다.
운영 체제의 파일 시스템을 기반으로 한 예시를 사용하여 프로토타입 패턴을 연구해 봅시다. 운영 체제의 파일 시스템은 재귀적입니다: 폴더에는 파일과 폴더들이 포함되며, 내부 폴더에도 파일과 폴더 등이 포함될 수 있습니다.
각 파일과 폴더는 inode 인터페이스로 나타낼 수 있습니다. inode 인터페이스도 clone 함수가 있습니다.
파일 및 폴더 구조체(struct)들은 모두 inode유형에 속하므로 print 및 clone 함수들을 구현합니다. 또한 파일과 폴더 모두에서 복제 함수를 확인하세요. 두 유형 모두에 있는 복제 함수는 해당 파일 또는 폴더의 복사본을 반환합니다. 복제하는 동안 이름 필드에 키워드 '_clone'을 추가합니다.