Design Pattern for Smalltalk – Prototype

t_Dpsc_chapter03_Prototype_01

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 에서 호출하게 되는 인스턴스의 메서드에 인자를 전달해서 변경을 만들어내는 방식이 고려될 수 있다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.