디자인패턴 Prototype(프로토 타입) 패턴

황제낙엽 2007.11.25 11:36 조회 수 : 112 추천:73

sitelink1  
sitelink2  
sitelink3  
extra_vars4  
extra_vars5  
extra_vars6  
http://blog.naver.com/gamediz/20041448546

1.    Prototype(프로토 타입) 패턴

1)     정의

프로토타입의 인스턴스를 이용해서 생성할 객체의 종류를 명세하고 이 프로토타입을 복사해서 새로운 객체를 생성한다.

 

프로토 타입 패턴은 전형적인 복사 패턴으로 데이터는 물론 기능까지 모두 복사해내는 패턴이다.

 

 

6을 보면 공장과정을 생략하고 바로 완제품에서 완제품을 복제해 낸 것을 볼 수 있다.물건을 하나 만들기 위해서 공장에 재료를 넣고 각 제작 라인에서 완제품을 만들어 내는 2단계의 과정을 삭제하고 바로 완제품에서 완제품을 만들어 내서 단계를 줄이는 수고를 덜고 있다. 하지만 개념상으로는 이게 프로토 타입의 전부라고 보여지지만 사실 프로토 타입은 이러한 물질적인 것보다는 비 물질적인 부분에 더욱 어울린다.

 

2)     예제

길동이는 취미하던 블로그가 무개념의 네티즌들에게 댓글 어택을 당한 후 매우 상심해서 자기만의 독립된 홈페이지를 만들기로 했다. 홈페이지를 만들면서 2가지의 구조를 가지게 만들었는데 첫번째는 글을 쓰기 위한 부분, 그리고 다른 하나는 글을 퍼가게 하는 구조를 만들어놨다. 길동이의 홈페이지는 매우 인기를 끌어서 많은 사람들이 글을 쓰고 퍼가서 길동이는 이른바 알파 블로거가 되었고, 홈페이지에서 죽치는 수 많은 사람들이 게시판 개선에 대해 이런저런 요구를 하게 된다. 그리고 그것을 해결하는 과정이 의외로 난관이 많아서 길동이의 머리를 싸매게 했는데.. 아래의 표를 보면서 길동이의 게시판 업그레이드에 대해 한번 살펴보자.

 

  

위의 표 7을 보면서 잠시 길동이의 게시판 업그레이드에 대해 설명하자면

길동이는 최초 게시판을 만들 때 Write 1.0을 만들어서 텍스트를 64k 까지 쓸 수 있게 했고, Perm 1.0을 만들어서 쓴 게시물을 다른 곳으로 퍼가는 기능을 지원했다. 그리고 이미지 기능이 추가 되면서 Write 1.5을 만들어서 이미지를 128k까지 사용할 수 있게 했고, 쓰기 부분이 바뀌면서 자연히 퍼가는 부분인 Perm 1.0도 퍼가는 부분을 Write 1.5에 맞춰서 바꿔서 Perm 1.5가 되었다.

여기서 길동이의 고민은 쓰기 부분에 소소한 용량 추가라도 발생하게 되면 퍼갈 수 있는 부분까지 계속 바꿔줘야 하는 것이다. 이런식이 되다보니, 짜증이 밀려올 수 밖에

그래서 게시판에 기능과 용량이 추가와는 무관하게 펌 기능을 사용할 수 있을까? 고민하다가 펌 부분을 개선하기로 결정한다.

 

이러한 부분의 개선은 발상의 전환만 있다면 의외로 쉽게 진행된다. 기존의 퍼가는 부분의 문제는 쓰는 부분이 변화 할 때 마다 퍼가는 부분이 바뀌어야 하기 때문에 생기는 것이였는데 퍼가는 부분은 변동하지 않는다면 어떨까?

게시물을 다 쓴 후에 퍼가기를 누르면 Perm 부분은 Clon ( ) 이라는 객체를 생성해서 게시물을 임시로 저장했다가, 다른 곳에 붙일 수 있도록 도와주는 것이다.

네이버와 같은 블로그에서는 이러한 펌 기능들이 잘 구현되어 있으며, 이러한 것이 프로토 타입 패턴을 효과적으로 잘 사용하는 것이라고 할 수 있다.

 

이 처럼 프로토 타입 패턴은 물질보다는 비물질에 어울리며, 형태 자체를 복사하는 것보다는 방식이나 형식을 복사하는 쪽에 더 어울리며 활용도가 높다.