본문 바로가기

공부/컴퓨터

[디자인패턴] Flyweight -공유- 패턴

반응형

==========================================================================
이 글은 이론적으로 아는 것을 직접 설명 및 구현을 해 봄으로써 제 자신의
실력을 다지기 위한 글 입니다. 물론 정확한 이론. 용어도 아님을 밝힙니다.
이 글을 직.간접적으로 사용함으로써 발생되는 모든 불이익을 책임지지 않습니다.

문의점, 오류, 잘못된 용어들은 저의 홈페이지 Work 게시판을 이용하여 주시고
이상의 사항에 대하여는 최대한 덧글 ( 코멘트 ) 를 이용해 주십시오.

본 글은 저의 홈페이지인 http://ggaman.com 과
싸이월드의 (JPSC) JAVA program study club 에서 보실수 있습니다.

homepage : http://ggaman.com e-mail n MSN : chan at ggaman.com

20030925 - Chan
==========================================================================
안녕하세요.
찬 입니다.

오늘 배워볼(? 어느새 가르칠려고 드네 ;; )..
다시 .. 시작 ! ;;;

오늘 알아볼 패턴은 Flyweight 패턴 입니다.
Flyweight 패턴은 이미 만들어진 객체를 다시 사용하는 것 입니다.
즉 같은것을 공유해서 또 쓰고 또쓰고 하는 것입니다. 이렇게 하면 메모리 낭비를 줄일수 있겠죠.

이 패턴에서는 같은 객체를 계속 사용해야 하므로. Singleton 패턴을 사용해야 합니다.

그리고 이미 만들어놓은 객체를 저장할 pool을 Hashtable을 이용해서 만듭니다.
( 개인적으로는 pool 구현법을 몰랐는데 Hashtable을 사용해서 구현 한다는 것을 알았습니다. )
( 물론 굳이 key가 필요 없는 것이라면 Hashtable을 사용하지 않아도 될거라 생각됩니다. )

사용하려고 하면 이미 객체가 만들어져 있는지 pool에서 확인하고
객체가 안 만들어져 있다면 객체를 추가 시킵니다. 그리고 만들어진 객체를 사용.
다시 사용하려고 한다면 pool에서 만들어진 객체를 꺼내서 사용하게 되는 것입니다.

현재 위의 UML 차트로는 제대로 된 사용법을 볼 수 없습니다.
( 저장할 객체를 pool에 여러개 저장하고 사용해야 정상이지만. 간단하게 한개만 저장됩니다. )

설명과 UML을 번갈아 보시면서 생각하시면 이해 하실수 있을거라 생각합니다.
( 이렇게 말한다고 저 또한 잘하는건 아닙니다. ;; 전 그냥 설명만 하는 차원이라 ;;; )


그럼이만.
즐거운 하루~~!!
반응형