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

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

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 ( ) 이라는 객체를 생성해서 게시물을 임시로 저장했다가, 다른 곳에 붙일 수 있도록 도와주는 것이다.

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

 

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


번호 제목 글쓴이 날짜 조회 수
64 [ChatGPT] 소프트웨어 품질 관리에서 필요로 하는 소양 황제낙엽 2025.05.02 242
63 [Selenium] 크롬 브라우저 실행 화면을 출력하거나 감추는 방법 황제낙엽 2024.05.05 377
62 [Selenium] 페이지 이동 함수 황제낙엽 2024.05.05 346
61 [Selenium] Chrome 실행 자동화 file 황제낙엽 2024.05.03 1498
60 [Selenium] MS Edge 실행 자동화(RPA, Robotic Process Automation) file 황제낙엽 2024.05.02 701
59 [Selenium] Warning : Unable to find CDP implementation matching 124 황제낙엽 2024.05.02 1062
58 프로젝트 WBS 예제 (Microsoft Project 2013) secret 황제낙엽 2021.05.12 0
57 WBS (Work Breakdown Structure) 황제낙엽 2020.06.18 286
56 프로젝트 진행 절차 file 황제낙엽 2020.05.21 405
55 BDD (Behaviour-Driven Development) 황제낙엽 2020.04.02 358
54 요구사항 개발과 요구사항 관리 요약(요구사항기술서 샘플) file 황제낙엽 2019.07.07 425
53 뒤늦게 정리하는 UML (Unified Modeling Language) 요약 file 황제낙엽 2017.03.29 767
52 StarUML™의 숨은 재미있는 기능 황제낙엽 2017.03.29 2481
51 The Facade Pattern file 황제낙엽 2017.01.04 655
50 와블스 프로세스(Warbles Process) 황제낙엽 2016.07.17 550
49 비 개발자 출신이 스크럼 마스터가 될 수 있는가? 황제낙엽 2015.06.25 621
48 디자인패턴[Observer 패턴] 황제낙엽 2013.10.18 500
47 PMBOK 5판 이해관계자 관리의 이해 [1] file 황제낙엽 2013.08.23 1650
46 Validation and Verification file 황제낙엽 2013.08.23 432
45 이해관계자의 관리/이해관계자 분석 황제낙엽 2013.08.23 670