Prototype 은 패턴을 Prototype으로 설계된 클래스의 부사에 대한 내용이다. 좀 뜬금없는 예가 되겠지만 Lazarus 를 예로 들어보자. (Lazarus는 Open Source 프로젝트이며 fpc (free passal compileer)를 이용하는 RAD 틀이다.)
Lazarus의 실행화면에서 새 프로젝트를 생성하고 상단의 팔레트를 보자. 이 팔레트에서 button을 하나 드래그해서 Form 위에 놓아보자. 쉽게 확인할 수 있듯이 button 이 하나 놓여졌다. Prototype 패턴은 이를 위한 패턴이다. 간단한 개념이지 않은가?
팔레트는 Client 가린다. 팔레트의 역할은 button의 Prototype의 Tbutton 클래스로 부터 인스턴스를 만들어 Form의 아래쪽으로 넣는 역할을 한다. 지금의 설명처럼 Tbutton 클래스는 button 인스턴스의 Prototype이 된다. (사실은 Tbutton의 인스턴스를 복사해서 인스턴스를 만드는게 더 정확한 개념이지만 지금은 설명을 위해 넘어가자)
Form 위에 여러개의 button을 넣는 경우 button의 label property는 자동으로 바뀌어 생성된다. 이렇게 복사되는 인스턴스의 상태(status)를 변경하는 데에는 팔레트에서의 변경과 놓이는 form 에서의 변경 등 두가지 정도의 경우가 있다. 이 두가지 경우에 있어서 인스턴스에 대한 초기화 매서드에서 변경을 처리하는 경우와, 놓이는 form 에서 호출하게 되는 인스턴스의 메서드에 인자를 전달해서 변경을 만들어내는 방식이 고려될 수 있다.