<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2357933784790449713</id><updated>2012-02-17T02:09:41.101+09:00</updated><category term='여행'/><category term='Data base'/><category term='이벤트 발생'/><category term='설치 구성 요소를 로드하는 동안 문제가 발행했습니다.'/><category term='액세스'/><category term='불량회사원의 낙원'/><category term='가족사진'/><category term='키부츠'/><category term='Garrery'/><category term='손가락 인식'/><category term='알고리즘'/><category term='예루살렘'/><category term='구현의 클래스 계층'/><category term='동물원'/><category term='오피스2007'/><category term='노말'/><category term='implements와 extends의 차이'/><category term='frarm'/><category term='sort'/><category term='1%'/><category term='닫기'/><category term='길'/><category term='객체'/><category term='최대화'/><category term='성공과실패'/><category term='패널'/><category term='PDF'/><category term='버전'/><category term='RCX'/><category term='던파 데미지 계산'/><category term='글씨 깨짐'/><category term='다이어리'/><category term='네비게이션'/><category term='클래스 다이어그램'/><category term='mvc'/><category term='호랑이'/><category term='ER다이어그램'/><category term='JAVA에서 Iterator'/><category term='DB'/><category term='view'/><category term='기도'/><category term='연동'/><category term='디자인'/><category term='꿈'/><category term='보안'/><category term='값 받기'/><category term='폼'/><category term='Compostie Pattern'/><category term='2008 삭제오류'/><category term='돼지'/><category term='hwp뷰어'/><category term='Template Method Pattern'/><category term='Adapter Pattern'/><category term='변경통보'/><category term='Abstract Factory'/><category term='템플릿 메소드 패턴'/><category term='template'/><category term='창의적 종합설계'/><category term='SecurityException'/><category term='Diary'/><category term='hwpctrl'/><category term='실전'/><category term='해상도'/><category term='정렬'/><category term='image'/><category term='wmv'/><category term='종속성'/><category term='Bridge Pattern'/><category term='윈도우스타일'/><category term='방콕'/><category term='Merge'/><category term='navigate'/><category term='ER'/><category term='App'/><category term='컴퓨터'/><category term='프로그램실행'/><category term='클리핑'/><category term='줄바꾸기'/><category term='Prototype'/><category term='Visual stdio 2008 제거 오류'/><category term='xbap'/><category term='bubble'/><category term='strategy pattern'/><category term='Singleton pattern'/><category term='Reflection'/><category term='Palyer'/><category term='Timer'/><category term='Mdoel'/><category term='레고'/><category term='MFC'/><category term='책'/><category term='플레이어'/><category term='giyun'/><category term='xps'/><category term='파일 입출력'/><category term='던파'/><category term='WPF'/><category term='복원'/><category term='전역'/><category term='이클립스'/><category term='이미지'/><category term='MVVM'/><category term='비주얼 스튜디오 2008 삭제'/><category term='Factory Method'/><category term='3d'/><category term='Game'/><category term='Template Method'/><category term='영역'/><category term='\r\n'/><category term='거래명세표'/><category term='시작'/><category term='CsGuard'/><category term='윈도우 버튼'/><category term='Source'/><category term='Quick'/><category term='Iterator Pattern'/><category term='PDF Viewer'/><category term='버블 정렬'/><category term='포트리스'/><category term='벌레'/><category term='newline'/><category term='Aero Glass 따라하기'/><category term='캐싱'/><category term='비스타'/><category term='선'/><category term='마을 마공'/><category term='소프트웨어공학'/><category term='비전'/><category term='세금계산서'/><category term='Factort Method Pattern'/><category term='디버그'/><category term='다익스트라'/><category term='접근'/><category term='Prototype Pattern'/><category term='감지 시스템'/><category term='줄바꿈'/><category term='퀵 정렬'/><category term='다름'/><category term='킥복싱'/><category term='bool?'/><category term='Pattern'/><category term='KPC'/><category term='photo'/><category term='접근허용'/><category term='최소화'/><category term='태국'/><category term='델리게이트'/><category term='int?'/><category term='프로그래머'/><category term='base'/><category term='일관성'/><category term='Mage'/><category term='모달'/><category term='Free'/><category term='C#에서 foreach'/><category term='delegate'/><category term='Media'/><category term='클릭윈스'/><category term='파타야'/><category term='viewmodel'/><category term='wmp'/><category term='JAVA'/><category term='일관성 없는 액세스 가능성'/><category term='Design pattern'/><category term='마을 물공'/><category term='디자인 패턴'/><category term='프레임'/><category term='바다'/><category term='모달리스'/><category term='Programming'/><category term='가능성'/><category term='프로젝트'/><category term='머지 정렬'/><category term='Wrapper Pattern'/><category term='점'/><category term='S.M.S'/><category term='Animation'/><category term='가젯'/><category term='Bulider Pattern'/><category term='키부츠 프로그램 센터'/><category term='HWP'/><category term='의존 프로퍼티'/><category term='동영상'/><category term='영상처리(Image)'/><category term='기능의 클래스 계층'/><category term='instance'/><category term='호텔'/><category term='미디어'/><category term='pdf reader'/><category term='textbox'/><category term='C#'/><category term='nullable'/><category term='코드에서'/><category term='clipping'/><category term='iterator'/><category term='더블버퍼링'/><category term='Windws XP'/><category term='전체크기'/><category term='dele'/><category term='값 넘기기'/><category term='Aero Glass'/><category term='프로그래밍'/><title type='text'>천사와악마사이</title><subtitle type='html'>나의 다이어리와 프로그래밍 했던 일정부분의 자료를 올려놓는 곳..</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://akangels-textcube.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://akangels-textcube.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default?start-index=101&amp;max-results=100'/><author><name>아크엔젤스</name><uri>http://www.blogger.com/profile/10209348568937169243</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>117</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2357933784790449713.post-4309348363570182511</id><published>2011-02-09T00:30:00.002+09:00</published><updated>2011-02-09T00:30:46.705+09:00</updated><title type='text'>티스토리로 옮김</title><content type='html'>티스토리로 옮김&lt;br /&gt;&lt;a href="http://akangels.tistory.com/"&gt;http://akangels.tistory.com/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2357933784790449713-4309348363570182511?l=akangels-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akangels-textcube.blogspot.com/feeds/4309348363570182511/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://akangels-textcube.blogspot.com/2011/02/blog-post_09.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/4309348363570182511'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/4309348363570182511'/><link rel='alternate' type='text/html' href='http://akangels-textcube.blogspot.com/2011/02/blog-post_09.html' title='티스토리로 옮김'/><author><name>아크엔젤스</name><uri>http://www.blogger.com/profile/10209348568937169243</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2357933784790449713.post-6253204069486278469</id><published>2011-02-08T20:00:00.001+09:00</published><updated>2011-02-08T20:00:31.435+09:00</updated><title type='text'>......</title><content type='html'>블러거 너무 불편해.......&lt;br /&gt;글목록 분류가없어........ 아악...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2357933784790449713-6253204069486278469?l=akangels-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akangels-textcube.blogspot.com/feeds/6253204069486278469/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://akangels-textcube.blogspot.com/2011/02/blog-post.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/6253204069486278469'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/6253204069486278469'/><link rel='alternate' type='text/html' href='http://akangels-textcube.blogspot.com/2011/02/blog-post.html' title='......'/><author><name>아크엔젤스</name><uri>http://www.blogger.com/profile/10209348568937169243</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2357933784790449713.post-2641980396160592260</id><published>2011-01-30T23:07:00.004+09:00</published><updated>2011-01-31T19:41:19.499+09:00</updated><title type='text'>대학시절 프로젝트 목록</title><content type='html'>※ 프로젝트 경험&lt;br /&gt;1. &lt;a href="http://akangels-textcube.blogspot.com/2009/05/%EB%84%A4%EB%B9%84%EA%B2%8C%EC%9D%B4%EC%85%98081103-1127.html"&gt;Dijkstra를 이용한 navigation&lt;/a&gt;&lt;br /&gt;- 기간 : 2008. 11 - 2008. 12&lt;br /&gt;- 개발환경 : Visual Studio 2005, C#, Access&lt;br /&gt;2. &lt;a href="http://akangels-textcube.blogspot.com/2009/05/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%9C-%EB%A1%9C%EB%B4%87%ED%86%B5%EC%8B%A0%EC%8B%9C%EB%AE%AC%EB%A0%88%EC%9D%B4%EC%85%98.html"&gt;네트워크를 이용한 로봇통신 시뮬레이션 &lt;/a&gt;&lt;br /&gt;- 기간 : 2008. 11 - 2008. 12 &lt;br /&gt;- 개발환경 : Visual Studio 2005, C#&lt;br /&gt;3. &lt;a href="http://akangels-textcube.blogspot.com/2009/05/smsscore-managers-%EC%84%B1%EC%A0%81%EA%B4%80%EB%A6%AC%EC%8B%9C%EC%8A%A4%ED%85%9C0896-124.html"&gt;성적관리 시스템(Score Managers)&lt;/a&gt; &lt;br /&gt;- 기간 : 2008. 09 - 2008. 12 &lt;br /&gt;- 개발환경 : Visual Studio 2005, C#, MS SQL 2005&lt;br /&gt;4. &lt;a href="http://akangels-textcube.blogspot.com/2009/05/%EC%86%90%EA%B0%80%EB%9D%BD-%EC%9D%B8%EC%8B%9D080523-0604.html"&gt;손가락 인식 프로그램 &lt;/a&gt;&lt;br /&gt;- 기간 : 2008. 05 - 2008. 06 &lt;br /&gt;- 개발환경 : Visual Studio 2005, MFC, 영상처리&lt;br /&gt;5. &lt;a href="http://akangels-textcube.blogspot.com/2009/05/%EC%A0%95%EB%A0%AC-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%9808917-102.html"&gt;정렬 알고리즘 &lt;/a&gt;&lt;br /&gt;- 기간 : 2008. 09 - 2008. 10 &lt;br /&gt;- 개발환경 : Eclipse, JAVA, Jigloo&lt;br /&gt;6. &lt;a href="http://akangels-textcube.blogspot.com/2009/05/%EC%8B%A4%EC%A0%84-%ED%8F%AC%ED%8A%B8%EB%A6%AC%EC%8A%A4.html"&gt;실전포트리스&lt;/a&gt; &lt;br /&gt;- 기간 : 2008. 09 - 2008. 12 &lt;br /&gt;- 개발환경 : RCX, C7. 자취방검색 프로그램 - 기간 : 2008. 09 - 2008. 12 &lt;br /&gt;- 개발환경 : C#, MS SQL&lt;br /&gt;&lt;br /&gt;※ 팀프로젝트 수상경험&lt;br /&gt;1. 2008창의적 종합설계 경진대회 (Capstone Design) 부문별 대상&lt;br /&gt;- 참여주제 : &lt;a href="http://akangels-textcube.blogspot.com/2009/05/%EC%9B%B9-%EC%B9%B4%EB%A9%94%EB%9D%BC%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%9C-%EA%B0%90%EC%A7%80-%EC%8B%9C%EC%8A%A4%ED%85%9C080415-080923.html"&gt;&lt;span style="color: black;"&gt;&lt;strong&gt;웹 카메라를 이용한 감시 시스템(Cs Guard)&lt;/strong&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;- 기간 : 2008. 04 ~ 2008. 09 &lt;br /&gt;- 내용 : 웹 카메라를 이용하여 외부 침입자 감시와 화재 및 내부자의 응급상황을 감지할 수 있는 시스템 &lt;br /&gt;- 담당분야 : 아이디어 제공 및 전체적인 프로그래밍 담당&lt;br /&gt;2. 2009창의적 종합설계 경진대회 (Capstone Design) 우수상 &lt;br /&gt;- 참여주제 : 가상으로 옷 선택하기 (Virtual Coordination) &lt;br /&gt;- 기간 : 2009. 04 ~ 2009. 09 &lt;br /&gt;- 내용 : 웹 카메라를 이용하여 사용자가 착용하고 있는 옷의 객체를 추출 및 색과 무늬를 넣음(증강현실) &lt;br /&gt;- 담당분야 : 아이디어 제공 및 전체적인 프로그래밍 담당&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2357933784790449713-2641980396160592260?l=akangels-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akangels-textcube.blogspot.com/feeds/2641980396160592260/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://akangels-textcube.blogspot.com/2011/01/blog-post.html#comment-form' title='1개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/2641980396160592260'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/2641980396160592260'/><link rel='alternate' type='text/html' href='http://akangels-textcube.blogspot.com/2011/01/blog-post.html' title='대학시절 프로젝트 목록'/><author><name>아크엔젤스</name><uri>http://www.blogger.com/profile/10209348568937169243</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2357933784790449713.post-1995178200966382898</id><published>2011-01-27T21:54:00.000+09:00</published><updated>2011-01-29T19:57:35.649+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Diary'/><title type='text'>답답하다.</title><content type='html'>&lt;P&gt;잘 선택한것인지 잘못된 선택을 한것인지 잘 모르겠다.&lt;/P&gt;&lt;P&gt;손가락에 꼽을정도로 읽은 책중에 폰더씨의 위대한 하루였던가..&lt;/P&gt;&lt;P&gt;그곳에서 하나의 선택으로 인하여 그사람에게 어떠한 결과가 미치는지 그리고 모든것은 그사람의 선택으로 인하여 결정된다는것...&lt;/P&gt;&lt;P&gt;요즘들이 그책이 생각난다.&lt;/P&gt;&lt;P&gt;지금 생각해보면,&lt;/P&gt;&lt;P&gt;왜 내 주의의 사람들은 그 회사를 좋다고 평가하는 사람이 단 한명도 없었던걸까..&lt;/P&gt;&lt;P&gt;그리고 난 왜 그 말들에 귀를 기울였던걸까..&lt;/P&gt;&lt;P&gt;그때 환경 여건을 생각한다면 그럴수밖에없었을까..&lt;/P&gt;&lt;P&gt;숙제 내준시간.. 새벽 3시 30분.. 그리고 주말포함해서 일요일까지 완료&lt;/P&gt;&lt;P&gt;처음에는 그냥 숙제형식이기에 주말 상관없이 나온줄알았는데.. &lt;/P&gt;&lt;P&gt;숙제의 어려움을 느끼고 친구한테 조언을 구하고자 물어보던 과정중에서&lt;/P&gt;&lt;P&gt;도대체 어떤회사이길래 이런 숙제를 내주었냐고해서 그회사의 이름을 말했다.&lt;/P&gt;&lt;P&gt;그랬더니 정말 충고하는데 가지말라고 하는것이다. 일만 하다가 끝난다라고..&lt;/P&gt;&lt;P&gt;그때까지 나는 에이 어차피 프로그래밍 하는것 좋아하는데 무슨상관이냐고 했었다.&lt;/P&gt;&lt;P&gt;그런데 자꾸 그말이 걸려서 다른 친구들에게 물어봤다.. 그회사 어떠냐고..&lt;/P&gt;&lt;P&gt;하나같이 좋다는 말이 안나왔다.. 단 한명만이라도 좋다고 나왔다면...... 아마 나의 선택은 달랐을것 같다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;아 잘모르겠다.. 정말 잘한 선택인지.... 바보같은 선택이였는지..&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;한가지 확실한것은 있다... 이 선택이 잘한 선택이기 위해서는 난 더 높은곳으로 가야한다는 것.&lt;/P&gt;&lt;P&gt;더 열심히 해야한다는 것..&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;그래도 그회사 덕분에 재밌는 공부를 했었다.. 진짜 객체 지향이라는것이 무엇인지 정도는 알았으니까..&lt;/P&gt;&lt;P&gt;그리고 팀원들과 같이 개발하기위해 그리고 나의 소스를 다른사람이 이해시키기위해 어떻게 해야할지는 알았으니까.. &lt;/P&gt;&lt;P&gt;좋은 배움은 된것 같다.. 이것을 써먹을수 있는 회사에 들어가야할텐데......&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2357933784790449713-1995178200966382898?l=akangels-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akangels-textcube.blogspot.com/feeds/1995178200966382898/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://akangels-textcube.blogspot.com/2011/01/%EB%8B%B5%EB%8B%B5%ED%95%98%EB%8B%A4.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/1995178200966382898'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/1995178200966382898'/><link rel='alternate' type='text/html' href='http://akangels-textcube.blogspot.com/2011/01/%EB%8B%B5%EB%8B%B5%ED%95%98%EB%8B%A4.html' title='답답하다.'/><author><name>아크엔젤스</name><uri>http://www.blogger.com/profile/10209348568937169243</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2357933784790449713.post-8628939070965605228</id><published>2010-11-28T02:50:00.000+09:00</published><updated>2011-01-29T19:57:35.572+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Diary'/><title type='text'>난 단지.. 만들고 싶을 뿐인데..</title><content type='html'>&lt;P&gt;난 컴퓨터로 프로그래밍 하는것이 좋다...&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;이제 12월... 어여 취직해서 만들어 보고싶다..&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;그런데 마음에 와닿는 그런 회사를 발견하질 못하였다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;대체 어딜가서 무엇을 해야할까...&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;정말 모르겠다... &lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;난 단지... 만들고 싶을 뿐인데... 그것을 어디에서 무엇을 만들어야할지... 모르겠다..&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;난 단지... 만들고 싶을 뿐인데... 어디를 가야할까....&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;어렵다....&lt;/P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2357933784790449713-8628939070965605228?l=akangels-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akangels-textcube.blogspot.com/feeds/8628939070965605228/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://akangels-textcube.blogspot.com/2010/11/%EB%82%9C-%EB%8B%A8%EC%A7%80-%EB%A7%8C%EB%93%A4%EA%B3%A0-%EC%8B%B6%EC%9D%84-%EB%BF%90%EC%9D%B8%EB%8D%B0.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/8628939070965605228'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/8628939070965605228'/><link rel='alternate' type='text/html' href='http://akangels-textcube.blogspot.com/2010/11/%EB%82%9C-%EB%8B%A8%EC%A7%80-%EB%A7%8C%EB%93%A4%EA%B3%A0-%EC%8B%B6%EC%9D%84-%EB%BF%90%EC%9D%B8%EB%8D%B0.html' title='난 단지.. 만들고 싶을 뿐인데..'/><author><name>아크엔젤스</name><uri>http://www.blogger.com/profile/10209348568937169243</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2357933784790449713.post-3680555829894631072</id><published>2010-07-05T05:28:00.000+09:00</published><updated>2011-01-29T19:57:35.419+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='던파'/><category scheme='http://www.blogger.com/atom/ns#' term='마을 물공'/><category scheme='http://www.blogger.com/atom/ns#' term='Game'/><category scheme='http://www.blogger.com/atom/ns#' term='마을 마공'/><category scheme='http://www.blogger.com/atom/ns#' term='던파 데미지 계산'/><title type='text'>던전앤파이터 마을 물리 및 마법 공격력 계산 프로그램</title><content type='html'>&lt;P&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;a href="http://ss.textcube.com/blog/1/10879/attach/XS1MnQV67s.exe/DNFDamage_1.exe" rel="enclosure" &gt;&lt;img src="http://ss.textcube.com/service/blog/image/extension/exe.gif" alt="" style="vertical-align: middle;" /&gt; DNFDamage_1.exe&lt;/a&gt;&lt;/div&gt;&lt;/P&gt;&lt;P&gt;그냥 심심해서 만들어봤다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;속성강화 및 퍼뎀, 고뎀스킬에 대한것은 나중에 추가하도록하겠다..&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;잠이와서..;;&lt;/P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2357933784790449713-3680555829894631072?l=akangels-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akangels-textcube.blogspot.com/feeds/3680555829894631072/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://akangels-textcube.blogspot.com/2010/07/%EB%8D%98%EC%A0%84%EC%95%A4%ED%8C%8C%EC%9D%B4%ED%84%B0-%EB%A7%88%EC%9D%84-%EB%AC%BC%EB%A6%AC-%EB%B0%8F-%EB%A7%88%EB%B2%95-%EA%B3%B5%EA%B2%A9%EB%A0%A5-%EA%B3%84%EC%82%B0-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/3680555829894631072'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/3680555829894631072'/><link rel='alternate' type='text/html' href='http://akangels-textcube.blogspot.com/2010/07/%EB%8D%98%EC%A0%84%EC%95%A4%ED%8C%8C%EC%9D%B4%ED%84%B0-%EB%A7%88%EC%9D%84-%EB%AC%BC%EB%A6%AC-%EB%B0%8F-%EB%A7%88%EB%B2%95-%EA%B3%B5%EA%B2%A9%EB%A0%A5-%EA%B3%84%EC%82%B0-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8.html' title='던전앤파이터 마을 물리 및 마법 공격력 계산 프로그램'/><author><name>아크엔젤스</name><uri>http://www.blogger.com/profile/10209348568937169243</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2357933784790449713.post-5084698173923637757</id><published>2009-12-09T11:53:00.000+09:00</published><updated>2011-01-29T19:57:35.273+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Design pattern'/><title type='text'>Command Pattern</title><content type='html'>&lt;script src='http://ss.textcube.com/service/blog/script/blogger.js' type='text/javascript'&gt;&lt;/script&gt;&lt;P&gt;&lt;STRONG&gt;Command Pattern&lt;/STRONG&gt;&lt;/P&gt;&lt;DIV style="BORDER-BOTTOM: #b2e8ed 1px solid; BORDER-LEFT: #b2e8ed 1px solid; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #e1fdff; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #b2e8ed 1px solid; BORDER-RIGHT: #b2e8ed 1px solid; PADDING-TOP: 10px"&gt;명령을 클래스로 표현하기&lt;br /&gt;Command : 명령, Event&lt;br /&gt;이벤트 구동 프로그래밍 에서 사용되는 이벤트와 같은 의미&lt;br /&gt;&lt;br /&gt;클래스가 일을 실행할 때에는 자신의 클래스나 다른 클래스의 메소드를 호출합니다. 메소드를 호출한 결과는 객체의 상태에 반영되지만, 일의 이력은 어디에도 남지 않습니다.&lt;br /&gt;이때 이 일을 실행하시오 라는 명령을 표현하는 클래스가 있으면 편리합니다. 실행하고 싶은 일을 메소드를 호출하는 동적인 처리로 표현하는 것이 아니라 명령을 나타내는 클래스의 인스턴스로 &lt;STRONG&gt;&lt;FONT color=#ff0000&gt;하나의 물건 처럼 표현&lt;/FONT&gt;&lt;/STRONG&gt;할 수 있기 때문입니다. 이력을 관리하고 싶을 때에는 그 인스턴스의 집합을 관리하면 됩니다. 명령의 집합을 저장해두면 같은 명령을 재 실행할 수 도 있고, 또는 복수의 명령을 모아서 새로운 명령으로 재이용할 수도 있습니다.&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;예제프로그램&lt;/STRONG&gt;&lt;/P&gt;&lt;DIV style="BORDER-BOTTOM: #b2e8ed 1px solid; BORDER-LEFT: #b2e8ed 1px solid; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #e1fdff; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #b2e8ed 1px solid; BORDER-RIGHT: #b2e8ed 1px solid; PADDING-TOP: 10px"&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XGZbFdG7Jo.png" style="width:542px;height:244px;" alt="" onclick="TC$PRIV_open_img('http://ss.textcube.com/blog/1/10879/attach/XGZbFdG7Jo.png')" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XHKbVIiz8L.png" style="width:544px;height:180px;" alt="" onclick="TC$PRIV_open_img('http://ss.textcube.com/blog/1/10879/attach/XHKbVIiz8L.png')" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;a href="http://ss.textcube.com/blog/1/10879/attach/XOLFZiSp1O.alz/CommandPattern.alz" rel="enclosure" &gt;&lt;img src="http://ss.textcube.com/service/blog/image/extension/unknown.gif" alt="" style="vertical-align: middle;" /&gt; CommandPattern.alz&lt;/a&gt;&lt;/div&gt;&lt;/DIV&gt;&lt;P&gt;&lt;br /&gt;&lt;STRONG&gt;Command Pattern의 등장인물&lt;/STRONG&gt;&lt;/P&gt;&lt;DIV style="BORDER-BOTTOM: #b2e8ed 1px solid; BORDER-LEFT: #b2e8ed 1px solid; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #e1fdff; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #b2e8ed 1px solid; BORDER-RIGHT: #b2e8ed 1px solid; PADDING-TOP: 10px"&gt;&lt;STRONG&gt;Command의 역할&lt;br /&gt;&lt;/STRONG&gt;: 명령의 인터페이스를 정의&lt;br /&gt;&amp;nbsp; 예제프로그램에서 Command 인터페이스&lt;br /&gt;&lt;br /&gt;&lt;STRONG&gt;ConcreteCommand의 역할&lt;br /&gt;&lt;/STRONG&gt;: Command역할의 인터페이스를 실제로 구현하고 있는 역할&lt;br /&gt;&amp;nbsp; 예제프로그램에서 MacroCommand 클래스와 DrawCommand 클래스&lt;br /&gt;&lt;br /&gt;&lt;STRONG&gt;Receiver의 역할&lt;br /&gt;&lt;/STRONG&gt;: Command 역할이 명령을 실행할 때 대상이 되는 역할. 명령을 받아들이는 수신자&lt;br /&gt;&amp;nbsp; 예제프로그램에서 DrawCommand의 명령을 받아들이고 있는 DrawPanel클래스&lt;br /&gt;&lt;br /&gt;&lt;STRONG&gt;Client의 역할&lt;br /&gt;&lt;/STRONG&gt;: ConcreCommand 역할을 생성하고그 사이에 Receiver 역할을 할당&lt;br /&gt;&amp;nbsp; 예제프로그램에서 Main 클래스&lt;br /&gt;&lt;br /&gt;&lt;STRONG&gt;Invoker(기동자)의 역할&lt;br /&gt;&lt;/STRONG&gt;: 명령의 행동을 개시하는 역할&lt;br /&gt;&amp;nbsp; Command역할에서 정의되는 인터페이스를 호출하는 역할이 됩니다. &lt;br /&gt;&amp;nbsp; 예제프로그램에서 Main클래스와 DrawPanel 클래스가 이 역할을 합니다. 이 두개의 클래스가 &lt;br /&gt;&amp;nbsp; Command 인터페이스의 execute 메소드를 호출하고 있습니다. Main 클래스는 Client 역할과 &lt;br /&gt;&amp;nbsp; Invoker 역할 둘 모두 수행합니다.&lt;br /&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XBMxi9V3lx.png" style="width:527px;height:329px;" alt="" onclick="TC$PRIV_open_img('http://ss.textcube.com/blog/1/10879/attach/XBMxi9V3lx.png')" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XDa4FAUKph.png" style="width:531px;height:395px;" alt="" onclick="TC$PRIV_open_img('http://ss.textcube.com/blog/1/10879/attach/XDa4FAUKph.png')" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/DIV&gt;&lt;P&gt;&lt;br /&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;출처 : Java 언어로 배우는 디자인 패턴 입문&lt;br /&gt;&lt;/P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2357933784790449713-5084698173923637757?l=akangels-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akangels-textcube.blogspot.com/feeds/5084698173923637757/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://akangels-textcube.blogspot.com/2009/12/command-pattern.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/5084698173923637757'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/5084698173923637757'/><link rel='alternate' type='text/html' href='http://akangels-textcube.blogspot.com/2009/12/command-pattern.html' title='Command Pattern'/><author><name>아크엔젤스</name><uri>http://www.blogger.com/profile/10209348568937169243</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2357933784790449713.post-8907619508806183964</id><published>2009-12-04T08:27:00.000+09:00</published><updated>2011-01-29T19:57:35.134+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Design pattern'/><title type='text'>Proxy Pattern</title><content type='html'>&lt;script src='http://ss.textcube.com/service/blog/script/blogger.js' type='text/javascript'&gt;&lt;/script&gt;&lt;P&gt;&lt;STRONG&gt;Proxy Pattern&lt;/STRONG&gt;&lt;/P&gt;&lt;DIV style="BORDER-BOTTOM: #b2e8ed 1px solid; BORDER-LEFT: #b2e8ed 1px solid; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #e1fdff; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #b2e8ed 1px solid; BORDER-RIGHT: #b2e8ed 1px solid; PADDING-TOP: 10px"&gt;Proxy : 대리인&lt;br /&gt;오브젝트(객체) 지향에서는 본인도 대리인도 오브젝트(객체)가 됩니다 바빠서 일을 할 수 없는 본인 오브젝트 대신에 대리인 오브젝트가 어느 정도 일을 처리하게 됩니다.&lt;/DIV&gt;&lt;P&gt;&lt;br /&gt;&lt;STRONG&gt;예제 프로그램&lt;/STRONG&gt;&lt;/P&gt;&lt;DIV style="BORDER-BOTTOM: #b2e8ed 1px solid; BORDER-LEFT: #b2e8ed 1px solid; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #e1fdff; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #b2e8ed 1px solid; BORDER-RIGHT: #b2e8ed 1px solid; PADDING-TOP: 10px"&gt;이름 있는 프린터&lt;br /&gt;Main클래스는 PrinterProxy클래스의 인스턴스를 생성&lt;br /&gt;그 인스턴스에 Alice라는 이름을 붙이고 그 이름을 표시&lt;br /&gt;그후 Bob 이라는 이름을 변경해서 그 이름을 표시&lt;br /&gt;(이름의 설정과 취득에서는 아직 실제 Printer 클래스의 인스턴스는 생성되지 않았습니다.)&lt;br /&gt;이름의 설정과 취득 부분은 PrinterProxy 클래스가 대리로 실행&lt;br /&gt;마지막에 print 메소드를 호출해서,&lt;br /&gt;&lt;STRONG&gt;&lt;FONT color=#ff0000&gt;실제로 프린터를 실행하는 단계가 되어서야 비로서 PrinterProxy 클래스는 Printer 클래스의 인스턴스를 생성&lt;/FONT&gt;&lt;/STRONG&gt;&lt;br /&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XJZGqexnuO.png" style="width:516px;height:343px;" alt="" onclick="TC$PRIV_open_img('http://ss.textcube.com/blog/1/10879/attach/XJZGqexnuO.png')" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XWZmdbThYL.png" style="width:468px;height:576px;" alt="" onclick="TC$PRIV_open_img('http://ss.textcube.com/blog/1/10879/attach/XWZmdbThYL.png')" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XOGpC1ApOz.png" style="width:518px;height:149px;" alt="" onclick="TC$PRIV_open_img('http://ss.textcube.com/blog/1/10879/attach/XOGpC1ApOz.png')" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;a href="http://ss.textcube.com/blog/1/10879/attach/XYyqFbS27T.alz/ProxyPattern.alz" rel="enclosure" &gt;&lt;img src="http://ss.textcube.com/service/blog/image/extension/unknown.gif" alt="" style="vertical-align: middle;" /&gt; ProxyPattern.alz&lt;/a&gt;&lt;/div&gt;&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Proxy Pattern의 등장인물&lt;/STRONG&gt;&lt;/P&gt;&lt;DIV style="BORDER-BOTTOM: #b2e8ed 1px solid; BORDER-LEFT: #b2e8ed 1px solid; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #e1fdff; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #b2e8ed 1px solid; BORDER-RIGHT: #b2e8ed 1px solid; PADDING-TOP: 10px"&gt;&lt;STRONG&gt;Subject(주체)의 역할&lt;br /&gt;&lt;/STRONG&gt;: Proxy 역할과 RealSubject 역할을 동일시하기 위한 인터페이스를 결정&lt;br /&gt;&amp;nbsp; Subject 역할이 있는 덕분에 Client 역할은 Proxy 역할과 RealSubject 역할의 차이를 의식할 &lt;br /&gt;&amp;nbsp; 필요가 없습니다.&lt;br /&gt;&amp;nbsp; 예제프로그램에서는 Printable 인터페이스&lt;br /&gt;&lt;br /&gt;&lt;STRONG&gt;Proxy(대리인)의 역할&lt;br /&gt;&lt;/STRONG&gt;: Proxy의 역할은 Clinet 역할의 요구를할 수 있는 만큼 처리를 합니다. 만약, 자신만으로 처리할 수 &lt;br /&gt;&amp;nbsp; 없으면 Proxy 역할은 RealSubject 역할에게 처리를 맡깁니다. Proxy 역할은 정말로 RealSubject &lt;br /&gt;&amp;nbsp; 역할이 필요해지면 그때 RealSubject 역할을 생성합니다. Proxy역할은 Subject 역할에 정해지는 &lt;br /&gt;&amp;nbsp; 인터페이스를 구현&lt;br /&gt;&amp;nbsp; 예제프로그램에서는 PrinterProxy&lt;br /&gt;&lt;br /&gt;&lt;STRONG&gt;RealSubject(실제의 주체)의 역할&lt;br /&gt;&lt;/STRONG&gt;: 대리인인 Proxy 역할에서 감당할 수 없는 일이 발생했을 때 등장하는 것이 본인인 RealSubject &lt;br /&gt;&amp;nbsp; 역할입니다. 이 혁할도 Proxy 역할과 마찬가지로 Subject 역할에서 정해져 있느 인터페이스를 구현&lt;br /&gt;&amp;nbsp; 예제프로그램에서는 Printer 클래스&lt;br /&gt;&lt;br /&gt;&lt;STRONG&gt;Clinet(의뢰인)의 역할&lt;br /&gt;&lt;/STRONG&gt;: Proxy Pattern을 이용하는 역할&lt;br /&gt;&amp;nbsp; 예제프로그램에서는 Main 클래스&lt;br /&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/Xehaj51XHl.png" style="width:525px;height:293px;" alt="" onclick="TC$PRIV_open_img('http://ss.textcube.com/blog/1/10879/attach/Xehaj51XHl.png')" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/DIV&gt;&lt;P&gt;&lt;br /&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;출처 : Java 언어로 배우는 디자인 패턴 입문&lt;br /&gt;&amp;nbsp;&lt;/P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2357933784790449713-8907619508806183964?l=akangels-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akangels-textcube.blogspot.com/feeds/8907619508806183964/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://akangels-textcube.blogspot.com/2009/12/proxy-pattern.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/8907619508806183964'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/8907619508806183964'/><link rel='alternate' type='text/html' href='http://akangels-textcube.blogspot.com/2009/12/proxy-pattern.html' title='Proxy Pattern'/><author><name>아크엔젤스</name><uri>http://www.blogger.com/profile/10209348568937169243</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2357933784790449713.post-6070422133970973853</id><published>2009-12-04T00:17:00.000+09:00</published><updated>2011-01-29T19:57:34.974+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Design pattern'/><title type='text'>Flyweight Pattern</title><content type='html'>&lt;script src='http://ss.textcube.com/service/blog/script/blogger.js' type='text/javascript'&gt;&lt;/script&gt;&lt;P&gt;&lt;STRONG&gt;Flyweight Pattern&lt;/STRONG&gt;&lt;/P&gt;&lt;DIV style="BORDER-BOTTOM: #b2e8ed 1px solid; BORDER-LEFT: #b2e8ed 1px solid; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #e1fdff; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #b2e8ed 1px solid; BORDER-RIGHT: #b2e8ed 1px solid; PADDING-TOP: 10px"&gt;Flyweight : 플라이급, 권투에서 가장 체중이 가벼운 체급&lt;br /&gt;&lt;br /&gt;&lt;STRONG&gt;Flyweight Pattern는 &lt;/STRONG&gt;오브젝트(객체)를 가볍게 하기 위한 것이 목적입니다.&lt;br /&gt;여기서 가볍게라는 의미를 말하자면, &lt;br /&gt;많은 메모리를 사용하는 오브젝트를 무겁다라고 표현하고, 적은 메모리를 사용하는 오브젝트를 가볍다라고 표현 합니다.&lt;DIV style="BORDER-BOTTOM: #ffb797 1px solid; BORDER-LEFT: #ffb797 1px solid; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #ffd7c5; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #ffb797 1px solid; BORDER-RIGHT: #ffb797 1px solid; PADDING-TOP: 10px"&gt;new Something()&lt;/DIV&gt;라는 식으로 Something 클래스의 인스턴스를 만들수 있습니다. 이때, 그 인스턴스를 저장하기 위해서 메모리가 확보됩니다. Something 클래스의 인스턴스가 많이 필요할 때에, new를 많이 하면 메모리의 사용량이 커지게 됩니다.&lt;br /&gt;이번 패턴에서 사용하는 기법을 한마디로 말하자면,&lt;br /&gt;&lt;STRONG&gt;&lt;FONT color=#ff0000&gt;&amp;nbsp;'인스턴스를 가능한 대로 공유시켜서 쓸데없이 new하지 않도록 한다.'&lt;br /&gt;&lt;/FONT&gt;&lt;/STRONG&gt;라는 것입니다.&lt;br /&gt;인스턴스가 필요할 때 항상 new 하는것이 아니라 이미 만들어져 있는 인스턴스를 이용할 수 있으면 그것을 공유해서 사용합니다 이것이 &lt;STRONG&gt;Flyweight Pattern의 핵심&lt;/STRONG&gt;입니다.&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;예제 프로그램&lt;/STRONG&gt;&lt;/P&gt;&lt;DIV style="BORDER-BOTTOM: #b2e8ed 1px solid; BORDER-LEFT: #b2e8ed 1px solid; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #e1fdff; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #b2e8ed 1px solid; BORDER-RIGHT: #b2e8ed 1px solid; PADDING-TOP: 10px"&gt;아래의 첨부파일을 보시면 debug 폴더에 big0~big9까지 텍스트파일로 들어있습니다. 이번 예제는&lt;br /&gt;파일(big0~9)로 부터 큰문자의 텍스트를 읽어들여 메모리에 저장하고 print 하는 것입니다.&lt;br /&gt;이때에 큰 문자는 메모리를 소비하기 대문에 인스턴스를 공유하는 방법을 쓴 것입니다.&lt;br /&gt;만약 인스턴스가 이미 만들어져 있는 경우에는 그것을 이용하고 새로운 인스턴스를 만들지 않습니다.&lt;br /&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XcJSgbUbSK.png" style="width:535px;height:178px;" alt="" onclick="TC$PRIV_open_img('http://ss.textcube.com/blog/1/10879/attach/XcJSgbUbSK.png')" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XKC5sowWdH.png" style="width:540px;height:155px;" alt="" onclick="TC$PRIV_open_img('http://ss.textcube.com/blog/1/10879/attach/XKC5sowWdH.png')" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XAVmFzAJPg.png" style="width:523px;height:416px;" alt="" onclick="TC$PRIV_open_img('http://ss.textcube.com/blog/1/10879/attach/XAVmFzAJPg.png')" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;a href="http://ss.textcube.com/blog/1/10879/attach/Xf3fkfxbaq.alz/FlyweightPattern.alz" rel="enclosure" &gt;&lt;img src="http://ss.textcube.com/service/blog/image/extension/unknown.gif" alt="" style="vertical-align: middle;" /&gt; FlyweightPattern.alz&lt;/a&gt;&lt;/div&gt;&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Flyweight Pattern의 등장인물&lt;/STRONG&gt;&lt;/P&gt;&lt;DIV style="BORDER-BOTTOM: #b2e8ed 1px solid; BORDER-LEFT: #b2e8ed 1px solid; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #e1fdff; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #b2e8ed 1px solid; BORDER-RIGHT: #b2e8ed 1px solid; PADDING-TOP: 10px"&gt;&lt;STRONG&gt;Flyweight의 역할&lt;br /&gt;&lt;/STRONG&gt;: 평소대로 취급하면 프로그램이 무거워지기 때문에 공유하는 것이 좋은 것을 나타내는 역할&lt;br /&gt;&amp;nbsp; 예제프로그램에서 BigChar 클래스&lt;br /&gt;&lt;br /&gt;&lt;STRONG&gt;FlyweightFactory의 역할&lt;br /&gt;&lt;/STRONG&gt;: FlyweightFactory 역할을 만드는 공장의 역할.&lt;br /&gt;&amp;nbsp; 이공장을 사용해서 Flyweight 역할을 만들면 인스턴스가 공유&lt;br /&gt;&amp;nbsp; 예제프로그램에서 BigCharFactory&lt;br /&gt;&lt;br /&gt;&lt;STRONG&gt;Client의 역할&lt;br /&gt;&lt;/STRONG&gt;: FlyweightFactory 역할을 사용해서 Flyweight 역할을 만들고 그것을 이용하는 역할&lt;br /&gt;&amp;nbsp; 예제프로그램에서 BigString 클래스&lt;br /&gt;&amp;nbsp;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XJCopYmba5.png" style="width:329px;height:597px;" alt="" onclick="TC$PRIV_open_img('http://ss.textcube.com/blog/1/10879/attach/XJCopYmba5.png')" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/DIV&gt;&lt;P&gt;&lt;br /&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;출처 : Java 언어로 배우는 디자인 패턴 입문&lt;br /&gt;&lt;/P&gt;&lt;P&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&lt;/P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2357933784790449713-6070422133970973853?l=akangels-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akangels-textcube.blogspot.com/feeds/6070422133970973853/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://akangels-textcube.blogspot.com/2009/12/flyweight-pattern.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/6070422133970973853'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/6070422133970973853'/><link rel='alternate' type='text/html' href='http://akangels-textcube.blogspot.com/2009/12/flyweight-pattern.html' title='Flyweight Pattern'/><author><name>아크엔젤스</name><uri>http://www.blogger.com/profile/10209348568937169243</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2357933784790449713.post-72388149702697449</id><published>2009-12-01T09:09:00.000+09:00</published><updated>2011-01-29T19:57:34.776+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Diary'/><title type='text'>설계... 그리고 패턴</title><content type='html'>&lt;P&gt;요즘 디자인 패턴을 공부하면서 참 많은 것을 느낀다.&lt;/P&gt;&lt;P&gt;객체지향이란 무엇인가....&lt;/P&gt;&lt;P&gt;객체란 무엇인가..&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;지금도 머.. 위 질문을 한마디로 대답해 라고 한다면.. &lt;/P&gt;&lt;P&gt;솔직히 제대로(?) 대답할 자신은 없다.&lt;/P&gt;&lt;P&gt;참 알다가도 모를 어려운 말이다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;하지만 패턴을 공부하면 할수록 객체란.. 객체 지향이란 무엇인지 점점 알아가는 재미가 있다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;패턴은..&lt;/P&gt;&lt;P&gt;이전의 프로그래머들께서.. 이런 일을 하는 프로그램은 이런 방법으로 만들면 나중에 유지보수도 쉽고&lt;/P&gt;&lt;P&gt;이런 장점도 있다. 머 이런 방법들이 있는 것이니까....&lt;/P&gt;&lt;P&gt;공부하면 공부할수록.. 아! 이런 방법도 있었구나! 하는 생각이 많이 든다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;나루토의.. 록리가 한말이 생각난다..&lt;/P&gt;&lt;P&gt;어제보다는 오늘, 오늘보다는 내일 더 강해진 내가 될것이다 였나??&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;그래 나도 지금 말하고있다.&lt;/P&gt;&lt;P&gt;어제보다는 오늘, 오늘보다는 내일 더 프로그램을 잘 짜고 싶다고..&lt;/P&gt;&lt;P&gt;그리고 노력할꺼라고..&lt;/P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2357933784790449713-72388149702697449?l=akangels-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akangels-textcube.blogspot.com/feeds/72388149702697449/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://akangels-textcube.blogspot.com/2009/12/%EC%84%A4%EA%B3%84-%EA%B7%B8%EB%A6%AC%EA%B3%A0-%ED%8C%A8%ED%84%B4.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/72388149702697449'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/72388149702697449'/><link rel='alternate' type='text/html' href='http://akangels-textcube.blogspot.com/2009/12/%EC%84%A4%EA%B3%84-%EA%B7%B8%EB%A6%AC%EA%B3%A0-%ED%8C%A8%ED%84%B4.html' title='설계... 그리고 패턴'/><author><name>아크엔젤스</name><uri>http://www.blogger.com/profile/10209348568937169243</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2357933784790449713.post-6050785191181500548</id><published>2009-12-01T08:32:00.000+09:00</published><updated>2011-01-29T19:57:34.647+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Design pattern'/><title type='text'>State Pattern</title><content type='html'>&lt;script src='http://ss.textcube.com/service/blog/script/blogger.js' type='text/javascript'&gt;&lt;/script&gt;&lt;P&gt;&lt;STRONG&gt;State Pattern&lt;/STRONG&gt;&lt;/P&gt;&lt;DIV style="BORDER-BOTTOM: #b2e8ed 1px solid; BORDER-LEFT: #b2e8ed 1px solid; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #e1fdff; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #b2e8ed 1px solid; BORDER-RIGHT: #b2e8ed 1px solid; PADDING-TOP: 10px"&gt;상태를 클래스로 표현하기&lt;br /&gt;상태를 클래스로 표현하면 클래스를 교체해서 '상태의 변화'를 표현할 수 있고, 새로운 상태를 추가해야 될 때 무엇을 프로그램하면 좋을지 분명해집니다.&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;State Pattern을 사용한 방법과 아닌 방법을 비교&lt;/STRONG&gt;&lt;/P&gt;&lt;DIV style="BORDER-BOTTOM: #b2e8ed 1px solid; BORDER-LEFT: #b2e8ed 1px solid; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #e1fdff; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #b2e8ed 1px solid; BORDER-RIGHT: #b2e8ed 1px solid; PADDING-TOP: 10px"&gt;&lt;P&gt;&lt;STRONG&gt;State Pattern을 사용하지 않은 유사 코딩&lt;/STRONG&gt;&lt;/P&gt;&lt;p id="more-110-0" class="moreless_fold" style="color: #000000; padding: 0 0 0 10px;"&gt;&lt;span style="cursor: pointer;" onclick="if (window.TC$PRIV_toggleMoreLessBlogger != undefined) {TC$PRIV_toggleMoreLessBlogger(this, '110-0','펼쳐두기.','접어두기..'); return false;} else {document.getElementById('content-110-0').style.display='';}"&gt;      펼쳐두기.&lt;/span&gt;&lt;/p&gt;  &lt;div id="content-110-0" class="moreless_content" style="display: none; border: 1px dashed #cccccc; background-color: #f3f3f3; margin: 0 10px padding: 5px;"&gt;경비시스템의 클래스{&lt;br /&gt;&amp;nbsp;&amp;nbsp; 금고 사용시에 호출되는 메소드() {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; if (&lt;FONT color=#ff0000&gt;주간&lt;/FONT&gt;) {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; 경비센터에 이용 기록&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; else if (&lt;FONT color=#ff0000&gt;야간&lt;/FONT&gt;) {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; 경비센터에 비상사태 통보&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp; &amp;nbsp; 비상벨 사용시에 호출되는 메소드() {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 경비센터에 비상벨 통보&lt;br /&gt;&amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp; &amp;nbsp; 일반 통화시에 호출되는 메소드() {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; if (&lt;FONT color=#ff0000&gt;주간&lt;/FONT&gt;) {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;경비센터의 호출&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; else if (&lt;FONT color=#ff0000&gt;야간&lt;/FONT&gt;) {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;경비센터의 자동응답기 호출&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp; &amp;nbsp; }&lt;br /&gt;}&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;State Pattern을 사용한 유사 코딩&lt;/STRONG&gt;&lt;/P&gt;&lt;p id="more-110-1" class="moreless_fold" style="color: #000000; padding: 0 0 0 10px;"&gt;&lt;span style="cursor: pointer;" onclick="if (window.TC$PRIV_toggleMoreLessBlogger != undefined) {TC$PRIV_toggleMoreLessBlogger(this, '110-1','펼쳐두기..','접어두기..'); return false;} else {document.getElementById('content-110-1').style.display='';}"&gt;      펼쳐두기..&lt;/span&gt;&lt;/p&gt;  &lt;div id="content-110-1" class="moreless_content" style="display: none; border: 1px dashed #cccccc; background-color: #f3f3f3; margin: 0 10px padding: 5px;"&gt;&lt;FONT color=#ff0000&gt;주간&lt;/FONT&gt; 상태를 표현하는 클래스 {&lt;br /&gt;&amp;nbsp; &amp;nbsp; 금고 사용시에 호출되는 메소드() {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 경비센터에 이용 기록&lt;br /&gt;&amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp; &amp;nbsp; 비상벨 사용시에 호출되는 메소드() {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 경비센터에 비상벨 통보&lt;br /&gt;&amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp; &amp;nbsp; 일반 통화시에 호출되는 메소드() {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 경비센터의 호출&lt;br /&gt;&amp;nbsp; &amp;nbsp; }&lt;br /&gt;}&lt;br /&gt;&lt;FONT color=#ff0000&gt;야간&lt;/FONT&gt; 상태를 표현하는 클래스 {&lt;br /&gt;&amp;nbsp; &amp;nbsp; 금고 사용시에 호출되는 메소드() {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 경비센터에 비상상태를 통보&lt;br /&gt;&amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp; &amp;nbsp; 비상벨 사용시에 호출되는 메소드() {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 경비센터에 비상벨 통보&lt;br /&gt;&amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp; &amp;nbsp; 일반 통화시에 호출되는 메소드() {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 경비센터의 자동응답기 호출&lt;br /&gt;&amp;nbsp; &amp;nbsp; }&lt;br /&gt;}&lt;br /&gt;&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/DIV&gt;&lt;P&gt;&lt;br /&gt;&lt;STRONG&gt;예제 프로그램&lt;/STRONG&gt;&lt;/P&gt;&lt;DIV style="BORDER-BOTTOM: #b2e8ed 1px solid; BORDER-LEFT: #b2e8ed 1px solid; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #e1fdff; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #b2e8ed 1px solid; BORDER-RIGHT: #b2e8ed 1px solid; PADDING-TOP: 10px"&gt;&lt;STRONG&gt;금고 경비 시스템&lt;/STRONG&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XWPwVrlfqz.png" style="width:532px;height:236px;" alt="" onclick="TC$PRIV_open_img('http://ss.textcube.com/blog/1/10879/attach/XWPwVrlfqz.png')" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XNtHHiC5To.png" style="width:478px;height:358px;" alt="" onclick="TC$PRIV_open_img('http://ss.textcube.com/blog/1/10879/attach/XNtHHiC5To.png')" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;STRONG&gt;클래스다이어그램&lt;/STRONG&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XQUgXOiDX9.png" style="width:529px;height:526px;" alt="" onclick="TC$PRIV_open_img('http://ss.textcube.com/blog/1/10879/attach/XQUgXOiDX9.png')" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XKtGi1Gavh.png" style="width:538px;height:181px;" alt="" onclick="TC$PRIV_open_img('http://ss.textcube.com/blog/1/10879/attach/XKtGi1Gavh.png')" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;a href="http://ss.textcube.com/blog/1/10879/attach/XBmnI8mtVB.alz/StatePattern.alz" rel="enclosure" &gt;&lt;img src="http://ss.textcube.com/service/blog/image/extension/unknown.gif" alt="" style="vertical-align: middle;" /&gt; StatePattern.alz&lt;/a&gt;&lt;/div&gt;&lt;/DIV&gt;&lt;P&gt;&lt;br /&gt;&lt;STRONG&gt;State Pattern의 등장인물&lt;/STRONG&gt;&lt;/P&gt;&lt;DIV style="BORDER-BOTTOM: #b2e8ed 1px solid; BORDER-LEFT: #b2e8ed 1px solid; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #e1fdff; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #b2e8ed 1px solid; BORDER-RIGHT: #b2e8ed 1px solid; PADDING-TOP: 10px"&gt;&lt;STRONG&gt;State(상태)의 역할&lt;br /&gt;&lt;/STRONG&gt;: 상태를 나타냄&lt;br /&gt;&amp;nbsp; 예제프로그램에서는 State 인터페이스&lt;br /&gt;&lt;br /&gt;&lt;STRONG&gt;ConcreteState(구체적인 상태)의 역할&lt;br /&gt;&lt;/STRONG&gt;: ConcreteState 역할은 구체적인 각각의 상태를 표현&lt;br /&gt;&amp;nbsp; 예제프로그램에서는 DatState 클래스 및 NightState 클래스&lt;br /&gt;&lt;br /&gt;&lt;STRONG&gt;Context(상황, 전후관계, 문맥)의 역할&lt;br /&gt;&lt;/STRONG&gt;: 현재의 상태를 나타내는 ConcreteState 역할&lt;br /&gt;&amp;nbsp; 예제프로그램에서는 Context 인터페이스와 SafeForm 클래스&lt;br /&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XUWT1Cyo4J.png" style="width:536px;height:364px;" alt="" onclick="TC$PRIV_open_img('http://ss.textcube.com/blog/1/10879/attach/XUWT1Cyo4J.png')" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/DIV&gt;&lt;P&gt;&lt;br /&gt;출처 : Java언어로 배우는 디자인 패턴 입문&lt;/P&gt;&lt;P&gt;&lt;br /&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;br /&gt;&amp;nbsp;&lt;/P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2357933784790449713-6050785191181500548?l=akangels-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akangels-textcube.blogspot.com/feeds/6050785191181500548/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://akangels-textcube.blogspot.com/2009/12/state-pattern.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/6050785191181500548'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/6050785191181500548'/><link rel='alternate' type='text/html' href='http://akangels-textcube.blogspot.com/2009/12/state-pattern.html' title='State Pattern'/><author><name>아크엔젤스</name><uri>http://www.blogger.com/profile/10209348568937169243</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2357933784790449713.post-8519052041578054314</id><published>2009-12-01T07:47:00.000+09:00</published><updated>2011-01-29T19:57:34.501+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='\r\n'/><category scheme='http://www.blogger.com/atom/ns#' term='줄바꿈'/><category scheme='http://www.blogger.com/atom/ns#' term='newline'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='textbox'/><category scheme='http://www.blogger.com/atom/ns#' term='줄바꾸기'/><title type='text'>C# TextBox 줄바꾸기</title><content type='html'>&lt;script src='http://ss.textcube.com/service/blog/script/blogger.js' type='text/javascript'&gt;&lt;/script&gt;&lt;P&gt;&lt;STRONG&gt;문제점(?)&lt;/STRONG&gt;&lt;/P&gt;&lt;DIV style="BORDER-BOTTOM: #b2e8ed 1px solid; BORDER-LEFT: #b2e8ed 1px solid; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #e1fdff; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #b2e8ed 1px solid; BORDER-RIGHT: #b2e8ed 1px solid; PADDING-TOP: 10px"&gt;&lt;P&gt;C#에서 TextBox에 줄바꾸기 문장을 이전방법으로 넣으면 아래와 같은 문제가 발생합니다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;이전방법&lt;/P&gt;&lt;P&gt;textBox.AppendText("record ... 야간의 통화 녹음\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XeynpoHh5T.jpg" style="width:355px;height:362px;" alt=""  /&gt;&lt;/div&gt;&lt;/P&gt;&lt;br /&gt;&lt;/DIV&gt;&lt;P&gt;&lt;br /&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;해결책&lt;/STRONG&gt;&lt;/P&gt;&lt;DIV style="BORDER-BOTTOM: #b2e8ed 1px solid; BORDER-LEFT: #b2e8ed 1px solid; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #e1fdff; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #b2e8ed 1px solid; BORDER-RIGHT: #b2e8ed 1px solid; PADDING-TOP: 10px"&gt;해결방법에는 2가지가 있습니다.&lt;br /&gt;1. \r\n 을 넣는다.&lt;br /&gt;2. Environment.NewLine 을 넣는다.&lt;br /&gt;즉, 위의 예제대로 한다면&lt;br /&gt;&lt;br /&gt;1. textBox.AppendText("record ... 야간의 통화 녹음\r\n");&lt;br /&gt;2. textBox.AppendText("record ... 야간의 통화 녹음" + Environment.NewLine);&lt;br /&gt;&lt;br /&gt;그럼 왜 그럴까요?&lt;br /&gt;이유는 아래의 참조 사이트를 보시길 바랍니다.&lt;br /&gt;&lt;A href="http://kin.naver.com/qna/detail.nhn?d1id=1&amp;amp;dirId=1040102&amp;amp;docId=69070343&amp;amp;qb=QyMg7YWN7Iqk7Yq467CV7IqkIOykhOuwlOq/iCBcbg==&amp;amp;enc=utf8&amp;amp;section=kin&amp;amp;rank=3&amp;amp;sort=0&amp;amp;spq=0&amp;amp;pid=fxd9Ewoi5UdsssVbEs0sss--198495&amp;amp;sid=SxQ9cPLdE0sAADvPKl4" target=_blank&gt;&lt;STRONG&gt;네이버지식인&lt;/STRONG&gt;&lt;/A&gt;&lt;br /&gt;&lt;p id="more-109-0" class="moreless_fold" style="color: #000000; padding: 0 0 0 10px;"&gt;&lt;span style="cursor: pointer;" onclick="if (window.TC$PRIV_toggleMoreLessBlogger != undefined) {TC$PRIV_toggleMoreLessBlogger(this, '109-0','펼쳐두기..','접어두기..'); return false;} else {document.getElementById('content-109-0').style.display='';}"&gt;      펼쳐두기..&lt;/span&gt;&lt;/p&gt;  &lt;div id="content-109-0" class="moreless_content" style="display: none; border: 1px dashed #cccccc; background-color: #f3f3f3; margin: 0 10px padding: 5px;"&gt;&lt;DIV&gt;&lt;FONT class=Apple-style-span color=#444444 size=3 face=돋움&gt;&lt;SPAN style="LINE-HEIGHT: 18px; FONT-SIZE: 12px" class=Apple-style-span&gt;용도가 조금 다름을 알아야 합니다. \r은 캐리지 리턴이고 \n은 뉴 라인입니다.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT class=Apple-style-span color=#444444 size=3 face=돋움&gt;&lt;SPAN style="LINE-HEIGHT: 18px; FONT-SIZE: 12px" class=Apple-style-span&gt;캐리지 리턴은 타자기에서 유래한것인데, 컴퓨터방식으로 이해하자면 현재 커서를 가장 앞으로 옮기는 것입니다.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT class=Apple-style-span color=#444444 size=3 face=돋움&gt;&lt;SPAN style="LINE-HEIGHT: 18px; FONT-SIZE: 12px" class=Apple-style-span&gt;뉴 라인은 말그대로 새 라인이구요.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT class=Apple-style-span color=#444444 size=3 face=돋움&gt;&lt;SPAN style="LINE-HEIGHT: 18px; FONT-SIZE: 12px" class=Apple-style-span&gt;즉 커서를 앞으로 옮기고 다음줄 =&amp;gt; 다음줄 맨앞으로 커서를 옮기라! &amp;nbsp; &amp;nbsp; &amp;nbsp;라는 뜻입니다.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT class=Apple-style-span color=#444444 size=3 face=돋움&gt;&lt;SPAN style="LINE-HEIGHT: 18px; FONT-SIZE: 12px" class=Apple-style-span&gt;간혹 \r 또는 \n 이 동일하게 해석되기도 합니다. 그냥 '다음줄 처음으로 이동하라' 라는 뜻으로 말이죠.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT class=Apple-style-span color=#444444 size=3 face=돋움&gt;&lt;SPAN style="LINE-HEIGHT: 18px; FONT-SIZE: 12px" class=Apple-style-span&gt;하지만 C#에서는 아닌가 봅니다. 사용하실때 유의 하세요.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;br /&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;br /&gt;&lt;/DIV&gt;&lt;P&gt;&lt;br /&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2357933784790449713-8519052041578054314?l=akangels-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akangels-textcube.blogspot.com/feeds/8519052041578054314/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://akangels-textcube.blogspot.com/2009/12/c-textbox-%EC%A4%84%EB%B0%94%EA%BE%B8%EA%B8%B0.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/8519052041578054314'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/8519052041578054314'/><link rel='alternate' type='text/html' href='http://akangels-textcube.blogspot.com/2009/12/c-textbox-%EC%A4%84%EB%B0%94%EA%BE%B8%EA%B8%B0.html' title='C# TextBox 줄바꾸기'/><author><name>아크엔젤스</name><uri>http://www.blogger.com/profile/10209348568937169243</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2357933784790449713.post-4919364499725972023</id><published>2009-11-27T14:53:00.000+09:00</published><updated>2011-01-29T19:57:34.285+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Design pattern'/><title type='text'>MeMento Pattern</title><content type='html'>&lt;script src='http://ss.textcube.com/service/blog/script/blogger.js' type='text/javascript'&gt;&lt;/script&gt;&lt;P&gt;&lt;STRONG&gt;MeMento Pattern&lt;/STRONG&gt;&lt;/P&gt;&lt;DIV style="BORDER-BOTTOM: #b2e8ed 1px solid; BORDER-LEFT: #b2e8ed 1px solid; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #e1fdff; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #b2e8ed 1px solid; BORDER-RIGHT: #b2e8ed 1px solid; PADDING-TOP: 10px"&gt;: 상태저장하기&lt;br /&gt;&amp;nbsp;&amp;nbsp; – Undo(실행취소)&lt;br /&gt;&amp;nbsp;&amp;nbsp; – redo(재실행)&lt;br /&gt;&amp;nbsp;&amp;nbsp; – history(작업 이력의 작성)&lt;br /&gt;&amp;nbsp;&amp;nbsp; – snapshot(현재 상태의 저장)&lt;br /&gt;&lt;STRONG&gt;&lt;FONT color=#ff0000&gt;인스턴스의 상태를 나타내는 역할을 도입해서 캡슐화의 파괴에 빠지지 않고 저장과 복원을 실행하는 것을 Memento 패턴&lt;br /&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;br /&gt;* 캡슐화파괴 : 인스턴스를 복원하기 위해서는 인스턴스 내부의 정보를 자유롭게 액세스할 수 있어야 합니다 그러나 원하지 않는 액세스를 허용하면 클래스 내부 구조에 의존한 코드가 프로그램의 여기저기로 흩어져 클래스의 수정을 어렵게 만듭니다. 이것을 캡슐화의 파고라고 합니다.&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;예제프로그램&lt;/STRONG&gt;&lt;/P&gt;&lt;DIV style="BORDER-BOTTOM: #b2e8ed 1px solid; BORDER-LEFT: #b2e8ed 1px solid; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #e1fdff; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #b2e8ed 1px solid; BORDER-RIGHT: #b2e8ed 1px solid; PADDING-TOP: 10px"&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XGl5i9T6DW.png" style="width:534px;height:403px;" alt="" onclick="TC$PRIV_open_img('http://ss.textcube.com/blog/1/10879/attach/XGl5i9T6DW.png')" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XM1lsMFv79.png" style="width:527px;height:522px;" alt="" onclick="TC$PRIV_open_img('http://ss.textcube.com/blog/1/10879/attach/XM1lsMFv79.png')" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XLuW1l33rV.png" style="width:542px;height:127px;" alt="" onclick="TC$PRIV_open_img('http://ss.textcube.com/blog/1/10879/attach/XLuW1l33rV.png')" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;a href="http://ss.textcube.com/blog/1/10879/attach/XG8gIV2Jeh.alz/MementoPattern.alz" rel="enclosure" &gt;&lt;img src="http://ss.textcube.com/service/blog/image/extension/unknown.gif" alt="" style="vertical-align: middle;" /&gt; MementoPattern.alz&lt;/a&gt;&lt;/div&gt;&lt;/DIV&gt;&lt;P&gt;&lt;br /&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;등장인물&lt;/STRONG&gt;&lt;/P&gt;&lt;DIV style="BORDER-BOTTOM: #b2e8ed 1px solid; BORDER-LEFT: #b2e8ed 1px solid; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #e1fdff; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #b2e8ed 1px solid; BORDER-RIGHT: #b2e8ed 1px solid; PADDING-TOP: 10px"&gt;&lt;STRONG&gt;Originator(작성자)의 역할&lt;br /&gt;&lt;/STRONG&gt;&amp;nbsp; 자신의 현재 상태를 저장하고 싶을 때 Memento 역할을 만듭니다. 또한, 이전의 Memento 역할을 &lt;br /&gt;&amp;nbsp; 전달받으면 그 MeMento 역할을 만든 시점의 상태로 돌리는 처리를 실행합니다.&lt;br /&gt;&amp;nbsp; 예제프로그램에서 Gamer 클래스&lt;br /&gt;&lt;br /&gt;&lt;STRONG&gt;Memento(기념품)의 역할&lt;br /&gt;&lt;/STRONG&gt;&amp;nbsp; Originator 역할의 내부 정보를 정리&lt;br /&gt;&amp;nbsp; Memento역할은 Originator 역할의 내부 정보를 가지고 있지만, 그 정보를 누구에게도 공개하지 &lt;br /&gt;&amp;nbsp; 않습니다.(C# 예제프로그램은 그냥 했음)&lt;br /&gt;&lt;br /&gt;* Memento 역할은 다음 두 종류의 인터페이스를 가지고 있습니다.&lt;br /&gt;&amp;nbsp; - wide interface -&lt;br /&gt;&amp;nbsp; &amp;nbsp; Memento 역할이 제공하는 넓은 인터페이스는 오브젝트의 상태를 원래의 상태로 돌리기 위해 &lt;br /&gt;&amp;nbsp; &amp;nbsp; 필요한 정보를 모두 얻을 수 있는 메소드의집합입니다. 넓은 인터페이스는 Memento 역할의 내부 &lt;br /&gt;&amp;nbsp; &amp;nbsp; 상태를 속속들이 들어내기 때문에 이것을 사용하는 것은 Originator 역할뿐입니다.&lt;br /&gt;&amp;nbsp; - narrow interface -&lt;br /&gt;&amp;nbsp; &amp;nbsp; Memento 역할이 제공하는 좁은 인터페이스는 외부의 Caretaker 역할에 보여주는 것입니다. 좁은 &lt;br /&gt;&amp;nbsp; &amp;nbsp; 인터페이스로 할 수 있는 일에는 한계가 있고 내부 상태가 외부에 공개되는 것을 방지합니다.&lt;br /&gt;&lt;br /&gt;&amp;nbsp; 이 두 종류의 인터페이스를 구별해서 사용하면 오브젝트의 캡슐화가 파괴도는 것을 방지&lt;br /&gt;&amp;nbsp; 예제 프로그램에서는 Memento 클래스&lt;br /&gt;&lt;br /&gt;&lt;STRONG&gt;Caretaker(관리인)의 역할&lt;br /&gt;&lt;/STRONG&gt;&amp;nbsp; 현재 Originator의 역할의 상태를 저장하고 싶을 때, 그것을 Originator역할에게 전합니다. 그것을 &lt;br /&gt;&amp;nbsp; 받아서 Memento 역할을 만들어 Caretaker 역할에게 전달합니다. Caretaker 역할은 미래의 필요에 &lt;br /&gt;&amp;nbsp; 대비해서 그 Memento 역할을 저장해 둡니다. 예제프로그램에서는 Main 클래스&lt;br /&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XePqesExK7.png" style="width:534px;height:367px;" alt="" onclick="TC$PRIV_open_img('http://ss.textcube.com/blog/1/10879/attach/XePqesExK7.png')" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/DIV&gt;&lt;P&gt;&lt;br /&gt;&lt;br /&gt;출처 : Java 언어로 배우는 디자인 패턴 입문&lt;/P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2357933784790449713-4919364499725972023?l=akangels-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akangels-textcube.blogspot.com/feeds/4919364499725972023/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://akangels-textcube.blogspot.com/2009/11/memento-pattern.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/4919364499725972023'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/4919364499725972023'/><link rel='alternate' type='text/html' href='http://akangels-textcube.blogspot.com/2009/11/memento-pattern.html' title='MeMento Pattern'/><author><name>아크엔젤스</name><uri>http://www.blogger.com/profile/10209348568937169243</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2357933784790449713.post-7770084112360296455</id><published>2009-11-26T13:43:00.000+09:00</published><updated>2011-01-29T19:57:34.151+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Design pattern'/><title type='text'>Observer Pattern</title><content type='html'>&lt;script src='http://ss.textcube.com/service/blog/script/blogger.js' type='text/javascript'&gt;&lt;/script&gt;&lt;P&gt;&lt;STRONG&gt;Observer Pattern&lt;/STRONG&gt;&lt;/P&gt;&lt;DIV style="BORDER-BOTTOM: #b2e8ed 1px solid; BORDER-LEFT: #b2e8ed 1px solid; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #e1fdff; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #b2e8ed 1px solid; BORDER-RIGHT: #b2e8ed 1px solid; PADDING-TOP: 10px"&gt;Observer : 관찰자&lt;br /&gt;관찰 대상의 상태가 변화하면 관찰자에게 알려줌&lt;br /&gt;상태변화에 따른 처리를 기술할 때 효과적&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;예제프로그램&lt;/STRONG&gt;&lt;/P&gt;&lt;DIV style="BORDER-BOTTOM: #b2e8ed 1px solid; BORDER-LEFT: #b2e8ed 1px solid; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #e1fdff; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #b2e8ed 1px solid; BORDER-RIGHT: #b2e8ed 1px solid; PADDING-TOP: 10px"&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XMSatqFIVb.png" style="width:523px;height:481px;" alt=""  /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XN1dPkUuVZ.png" style="width:540px;height:183px;" alt="" onclick="TC$PRIV_open_img('http://ss.textcube.com/blog/1/10879/attach/XN1dPkUuVZ.png')" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;a href="http://ss.textcube.com/blog/1/10879/attach/XdXOqfUNSv.alz/ObserverPattern.alz" rel="enclosure" &gt;&lt;img src="http://ss.textcube.com/service/blog/image/extension/unknown.gif" alt="" style="vertical-align: middle;" /&gt; ObserverPattern.alz&lt;/a&gt;&lt;/div&gt;&lt;/DIV&gt;&lt;P&gt;&lt;br /&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Observer Pattern 의 등장인물&lt;/STRONG&gt;&lt;/P&gt;&lt;DIV style="BORDER-BOTTOM: #b2e8ed 1px solid; BORDER-LEFT: #b2e8ed 1px solid; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #e1fdff; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #b2e8ed 1px solid; BORDER-RIGHT: #b2e8ed 1px solid; PADDING-TOP: 10px"&gt;&lt;STRONG&gt;Subject(관찰 대상자)의 역할&lt;br /&gt;&lt;/STRONG&gt;: Subject는 관찰되는 대상을 나타냅니다. &lt;br /&gt;&amp;nbsp; Subject 역할은 관찰자인 Observer 역할을 등록하는 메소드와 삭제하는 메소드를 가짐.&lt;br /&gt;&amp;nbsp; 또 현재의 상태를 취득하는 메소드도 선언되어 있습니다.&lt;br /&gt;&amp;nbsp; 예제프로그램에서 NumberGenerator 클래스&lt;br /&gt;&lt;br /&gt;&lt;STRONG&gt;ConcreteSubject(구체적인 관찰 대상자)의 역할&lt;br /&gt;&lt;/STRONG&gt;: 구체적으로 관찰되는 대상을 표현하는 역할&lt;br /&gt;&amp;nbsp; 상태가 변화하면 그것이 등록되어 있는 Observer역할에 전합니다.&lt;br /&gt;&amp;nbsp; 예제프로그램에서 RandomNumberGenerator 클래스&lt;br /&gt;&lt;br /&gt;&lt;STRONG&gt;Observer(관찰자) 의 역할&lt;br /&gt;&lt;/STRONG&gt;: Subject 역할로 부터 상태가 변했습니다 라고 전달받는 역할을 합니다. 이를 위한 메소드는 update&lt;br /&gt;&amp;nbsp; 예제프로그램에서는 Observer 인터페이스&lt;br /&gt;&lt;br /&gt;&lt;STRONG&gt;ConcreteObserver(구체적인 관찰자)의 역할&lt;br /&gt;&lt;/STRONG&gt;: 구체적인 Observer&lt;br /&gt;&amp;nbsp; update 메소드가 호출되면 그 메소드 안에서 Subject 역할의 현재 상태를 취득&lt;br /&gt;&amp;nbsp; 예제프로그램에서 DigitObserver클래스, GraphObserver클래스&lt;br /&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XNMlqogFPa.png" style="width:545px;height:348px;" alt="" onclick="TC$PRIV_open_img('http://ss.textcube.com/blog/1/10879/attach/XNMlqogFPa.png')" /&gt;&lt;/div&gt;&lt;/DIV&gt;&lt;P&gt;&lt;br /&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;출처 : Java 언어로 배우는 디자인 패턴 입문&lt;br /&gt;&lt;/P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2357933784790449713-7770084112360296455?l=akangels-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akangels-textcube.blogspot.com/feeds/7770084112360296455/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://akangels-textcube.blogspot.com/2009/11/observer-pattern.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/7770084112360296455'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/7770084112360296455'/><link rel='alternate' type='text/html' href='http://akangels-textcube.blogspot.com/2009/11/observer-pattern.html' title='Observer Pattern'/><author><name>아크엔젤스</name><uri>http://www.blogger.com/profile/10209348568937169243</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2357933784790449713.post-7136646637684855632</id><published>2009-11-22T21:29:00.000+09:00</published><updated>2011-01-29T19:57:34.035+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='코드에서'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='이벤트 발생'/><title type='text'>C# 디자인이 아닌 코드에서 아이템 추가하기</title><content type='html'>&lt;P&gt;제목 그대로입니다. 디자인 화면에서 그냥 마우스 드래그 하는것이 아닌 코드내에서 버튼, 체크박스, 라디오버튼 등.. 이런것들을 넣는것입니다. 물론 사용자가 직접 만든 아이템도 포함이지요..&lt;/P&gt;&lt;P&gt;머 이런것이 필요하겠냐 하는 분들도 계실지 모르지만.. 제가.. 필요했던적이 있었기에.. 이렇게 끄적입니다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;FONT color=#4dbf00&gt;&lt;DIV style="BORDER-BOTTOM: #b2e8ed 1px solid; BORDER-LEFT: #b2e8ed 1px solid; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #e1fdff; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #b2e8ed 1px solid; BORDER-RIGHT: #b2e8ed 1px solid; PADDING-TOP: 10px"&gt;&lt;P&gt;private ColleagueButton buttonOk; &lt;FONT color=#4dbf00&gt;// 선언&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;buttonOk = new ColleagueButton("OK");&lt;FONT color=#4dbf00&gt; // 생성&lt;br /&gt;&lt;/FONT&gt;buttonOk.Location = new System.Drawing.Point(20, 130);&lt;FONT color=#4dbf00&gt; //위치 지정&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;this.Controls.Add(this.buttonOk); &lt;FONT color=#4dbf00&gt;// 폼에 넣기&lt;/FONT&gt;&lt;/P&gt;&lt;/DIV&gt;&lt;/FONT&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;위의 순서대로 코딩하시면 됩니다.&lt;/P&gt;&lt;P&gt;참고로.. "OK" 이것을 넣은것은 제가 임의로 만든 버튼클래스에 생성자로 이름을 넣은것입니다.&lt;/P&gt;&lt;P&gt;그냥 버튼을 만드실때에는 가로안을 비워주시면됩니다.( private Button btn; // 선언 )&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;자 그럼 이벤트 이렇게 코드로 추가된 버튼에 이벤트 넣기&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;DIV style="BORDER-BOTTOM: #b2e8ed 1px solid; BORDER-LEFT: #b2e8ed 1px solid; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #e1fdff; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #b2e8ed 1px solid; BORDER-RIGHT: #b2e8ed 1px solid; PADDING-TOP: 10px"&gt;&lt;P&gt;buttonOK.Click += new System.EventHandler(this.buttonOK_Click); &lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;public void buttonOK_Click(object sender, EventArgs e)&lt;br /&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp;&lt;FONT color=#4dbf00&gt; // 클릭이벤트 발생시 일어나는 일을 넣기&lt;br /&gt;&lt;/FONT&gt;}&lt;/P&gt;&lt;br /&gt;&lt;/DIV&gt;&lt;P&gt;&lt;br /&gt;&amp;nbsp;&lt;/P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2357933784790449713-7136646637684855632?l=akangels-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akangels-textcube.blogspot.com/feeds/7136646637684855632/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://akangels-textcube.blogspot.com/2009/11/c-%EB%94%94%EC%9E%90%EC%9D%B8%EC%9D%B4-%EC%95%84%EB%8B%8C-%EC%BD%94%EB%93%9C%EC%97%90%EC%84%9C-%EC%95%84%EC%9D%B4%ED%85%9C-%EC%B6%94%EA%B0%80%ED%95%98%EA%B8%B0.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/7136646637684855632'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/7136646637684855632'/><link rel='alternate' type='text/html' href='http://akangels-textcube.blogspot.com/2009/11/c-%EB%94%94%EC%9E%90%EC%9D%B8%EC%9D%B4-%EC%95%84%EB%8B%8C-%EC%BD%94%EB%93%9C%EC%97%90%EC%84%9C-%EC%95%84%EC%9D%B4%ED%85%9C-%EC%B6%94%EA%B0%80%ED%95%98%EA%B8%B0.html' title='C# 디자인이 아닌 코드에서 아이템 추가하기'/><author><name>아크엔젤스</name><uri>http://www.blogger.com/profile/10209348568937169243</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2357933784790449713.post-4112383988887169185</id><published>2009-11-22T21:19:00.000+09:00</published><updated>2011-01-29T19:57:33.909+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><title type='text'>사용자 정의 컨트롤</title><content type='html'>&lt;script src='http://ss.textcube.com/service/blog/script/blogger.js' type='text/javascript'&gt;&lt;/script&gt;&lt;P&gt;아이템에 사용자 정의 옵션을 넣은 상태로 기본 생성하기(?)&lt;/P&gt;&lt;P&gt;먼말이야.. 하는 분들이 많을듯 합니다..&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;예를 들어 아무개 화면에 버튼을 넣는다고 합니다. 자.. 이 버튼에 이런저런 옵션을 넣어주고싶어합니다.&lt;/P&gt;&lt;P&gt;그럼 디자인화면에서 도구상자에서 버튼을 찾아 끌어다가 넣어주고 이런저런 옵션을 넣어주면됩니다.&lt;/P&gt;&lt;P&gt;자 그럼 만약에.. 이러한 버튼을 1개가 아닌 2개이상 아니 5개 10개.. 이렇게 넣는다면(?)&lt;/P&gt;&lt;P&gt;위의 작업을 5번 10번 해야하는것이죠.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;이런 작업을 해놓은 하나의 아이템을 만드는 방법이 있습니다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;바로 사용자 정의 컨트롤이죠....&lt;/P&gt;&lt;P&gt;만드는 방법은..&lt;/P&gt;&lt;P&gt;&lt;div class="imageblock dual center" style="text-align: center; clear: both;"&gt;&lt;table cellspacing="5" cellpadding="0" border="0" style="margin:0 auto;"&gt;&lt;tr&gt;&lt;td&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XI4ZGj27tx.jpg" style="width:290px;height:254px;" alt="" onclick="TC$PRIV_open_img('http://ss.textcube.com/blog/1/10879/attach/XI4ZGj27tx.jpg')" /&gt;&lt;/td&gt;&lt;td&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XRz199EyUD.jpg" style="width:290px;height:363px;" alt="" onclick="TC$PRIV_open_img('http://ss.textcube.com/blog/1/10879/attach/XRz199EyUD.jpg')" /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;위의 첫번째 화면으로 추가해주신다음에 디자인화면에 가서 보시면 두번째 화면과 같이 마음대로 추가하시며 쓰실수 있습니다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2357933784790449713-4112383988887169185?l=akangels-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akangels-textcube.blogspot.com/feeds/4112383988887169185/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://akangels-textcube.blogspot.com/2009/11/%EC%82%AC%EC%9A%A9%EC%9E%90-%EC%A0%95%EC%9D%98-%EC%BB%A8%ED%8A%B8%EB%A1%A4.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/4112383988887169185'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/4112383988887169185'/><link rel='alternate' type='text/html' href='http://akangels-textcube.blogspot.com/2009/11/%EC%82%AC%EC%9A%A9%EC%9E%90-%EC%A0%95%EC%9D%98-%EC%BB%A8%ED%8A%B8%EB%A1%A4.html' title='사용자 정의 컨트롤'/><author><name>아크엔젤스</name><uri>http://www.blogger.com/profile/10209348568937169243</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2357933784790449713.post-5152688302057466767</id><published>2009-11-22T20:54:00.000+09:00</published><updated>2011-01-29T19:57:33.800+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Design pattern'/><title type='text'>Mediator Pattern</title><content type='html'>&lt;script src='http://ss.textcube.com/service/blog/script/blogger.js' type='text/javascript'&gt;&lt;/script&gt;&lt;P&gt;&lt;STRONG&gt;Mediator Pattern&lt;/STRONG&gt;&lt;/P&gt;&lt;DIV style="BORDER-BOTTOM: #b2e8ed 1px solid; BORDER-LEFT: #b2e8ed 1px solid; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #e1fdff; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #b2e8ed 1px solid; BORDER-RIGHT: #b2e8ed 1px solid; PADDING-TOP: 10px"&gt;Mediator : 중개인, 조정자 라는 뜻이지만 패턴에서는 의지할수 있는 중개인으로 생각하는 하세요.&lt;br /&gt;곤란한 일이 생기거나 모임 전체에 영향을 미칠만한 일이 발생하면 중개인에게 알리고, 중개인의 지시대로 실행합니다. 모임의 각 회원이 멋대로 다른 회원과 대화해서 판단하는 것이 아니라, 언제나 중개인을 통해서 행동하도록 합니다. 한편 중개인은 모임의 회원으로부터 올라온 보고를 기초로 판단을 해서 각 회원에게 지시를 내립니다. Mediator 패턴을 이와같은 성격의 디자인 패턴입니다.&lt;/DIV&gt;&lt;P&gt;&lt;br /&gt;&lt;STRONG&gt;예제프로그램&lt;/STRONG&gt;&lt;/P&gt;&lt;DIV style="BORDER-BOTTOM: #b2e8ed 1px solid; BORDER-LEFT: #b2e8ed 1px solid; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #e1fdff; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #b2e8ed 1px solid; BORDER-RIGHT: #b2e8ed 1px solid; PADDING-TOP: 10px"&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XYDimOBEMo.png" style="width:541px;height:354px;" alt="" onclick="TC$PRIV_open_img('http://ss.textcube.com/blog/1/10879/attach/XYDimOBEMo.png')" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XERDv0iGrn.png" style="width:543px;height:410px;" alt="" onclick="TC$PRIV_open_img('http://ss.textcube.com/blog/1/10879/attach/XERDv0iGrn.png')" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XdI1Zhlhnt.png" style="width:540px;height:191px;" alt="" onclick="TC$PRIV_open_img('http://ss.textcube.com/blog/1/10879/attach/XdI1Zhlhnt.png')" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;STRONG&gt;결과화면&lt;br /&gt;&lt;/STRONG&gt;이번에는 결과화면을 넣어야 할듯싶어서 이렇게 넣었습니다. &lt;br /&gt;&lt;STRONG&gt;1. 로그인 다이얼로그 모습&lt;br /&gt;&lt;/STRONG&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XJKD2Kx5g2.jpg" style="width:253px;height:200px;" alt=""  /&gt;&lt;/div&gt;&lt;br /&gt;&lt;STRONG&gt;2. 사용자 로그인이 선택되어 있으면, 사용자 명은 유효상태이지만 패스워드는 무효상태&lt;br /&gt;&lt;/STRONG&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XBKJSuVxFI.jpg" style="width:253px;height:200px;" alt=""  /&gt;&lt;/div&gt;&lt;br /&gt;&lt;STRONG&gt;3. 사용자 명에 한 문자라도 입력되어 있으면, 패스워드는 유효상태이지만 OK 버튼은 무효상태&lt;br /&gt;&lt;/STRONG&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XeMT2VSum0.jpg" style="width:253px;height:200px;" alt=""  /&gt;&lt;/div&gt;&lt;br /&gt;&lt;STRONG&gt;4. 패스워드에도 문자가 입력되면 OK 버튼도 유효&lt;br /&gt;&lt;/STRONG&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XeHF65ndtt.jpg" style="width:253px;height:200px;" alt=""  /&gt;&lt;/div&gt;&lt;br /&gt;&lt;STRONG&gt;5. 게스트 로그인을 하면 사용자 명도 패스워드도 무효상태&lt;br /&gt;&lt;/STRONG&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XWfRSAEb1e.jpg" style="width:253px;height:200px;" alt=""  /&gt;&lt;/div&gt;&lt;br /&gt;&lt;STRONG&gt;6. 패스워드가 입력되어 있어도 사용자 명을 삭제하면 OK버튼과 패스워드는 무효&lt;br /&gt;&lt;/STRONG&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XAgjjTBO6B.jpg" style="width:253px;height:200px;" alt=""  /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;a href="http://ss.textcube.com/blog/1/10879/attach/XULVRVEcBA.alz/MediatorPattern.alz" rel="enclosure" &gt;&lt;img src="http://ss.textcube.com/service/blog/image/extension/unknown.gif" alt="" style="vertical-align: middle;" /&gt; MediatorPattern.alz&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;여담이지만... 이번 예제프로그램은 좀 마니 까다로웠습니다 역시 자바와 C#은 서로 싫어합니다 -0-&lt;br /&gt;클래스다이어그램을보고 새로 짜야하였기에.. ㅡㅠ&lt;br /&gt;물론 아래와 같은 사항을 만족하는 프로그램을 그냥 짜면 초 쉽습니다. 단지. Mediator 패턴에 따라 하니 좀.... 귀차는 구석이 많더군요.&lt;br /&gt;&lt;/DIV&gt;&lt;P&gt;&lt;br /&gt;&lt;STRONG&gt;Mediator Pattern의 등장인물&lt;/STRONG&gt;&lt;/P&gt;&lt;DIV style="BORDER-BOTTOM: #b2e8ed 1px solid; BORDER-LEFT: #b2e8ed 1px solid; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #e1fdff; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #b2e8ed 1px solid; BORDER-RIGHT: #b2e8ed 1px solid; PADDING-TOP: 10px"&gt;&lt;STRONG&gt;Mediator(조장자, 중개자)의 역할&lt;br /&gt;&lt;/STRONG&gt;: Mediator의 역할은 Colleague 역할과 통신을 해서 조정을 실행하기 위한 인터페이스를 결정&lt;br /&gt;&amp;nbsp; 예제프로그램은 Mediator 인터페이스&lt;br /&gt;&lt;br /&gt;&lt;STRONG&gt;ConcreteMediator(구체적인 조정자, 중개자)의 역할&lt;br /&gt;&lt;/STRONG&gt;: Mediator 역할의 언터페이스를 구현해서 실제의 조정을 실행&lt;br /&gt;&amp;nbsp; 예제프로그램에서는 LoginForm 클래스&lt;br /&gt;&lt;br /&gt;&lt;STRONG&gt;Colleague(동료)의 역할&lt;br /&gt;&lt;/STRONG&gt;: Mediator 역할과 통신을 실행할 인터페이스를 결정&lt;br /&gt;&amp;nbsp; 예제프로그램에서는 Colleague 인터페이스&lt;br /&gt;&lt;br /&gt;&lt;STRONG&gt;ConcreteColleague(구체적인 동료)의 역할&lt;br /&gt;&lt;/STRONG&gt;: Colleague 역할의 인터페이스를 구현&lt;br /&gt;&amp;nbsp; 예제프로그램에서는 ColleagueButton, ColleagueTextBox, ColleagueRadioButton의 각 클래스&lt;br /&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XYAN9nTR38.png" style="width:543px;height:438px;" alt="" onclick="TC$PRIV_open_img('http://ss.textcube.com/blog/1/10879/attach/XYAN9nTR38.png')" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/DIV&gt;&lt;P&gt;&lt;br /&gt;&amp;nbsp;출처 : Java 언어로 배우는 디자인 패턴 입문&lt;/P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2357933784790449713-5152688302057466767?l=akangels-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akangels-textcube.blogspot.com/feeds/5152688302057466767/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://akangels-textcube.blogspot.com/2009/11/mediator-pattern.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/5152688302057466767'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/5152688302057466767'/><link rel='alternate' type='text/html' href='http://akangels-textcube.blogspot.com/2009/11/mediator-pattern.html' title='Mediator Pattern'/><author><name>아크엔젤스</name><uri>http://www.blogger.com/profile/10209348568937169243</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2357933784790449713.post-3710014836481158968</id><published>2009-11-19T16:36:00.000+09:00</published><updated>2011-01-29T19:57:31.277+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Design pattern'/><title type='text'>Facade Pattern</title><content type='html'>&lt;script src='http://ss.textcube.com/service/blog/script/blogger.js' type='text/javascript'&gt;&lt;/script&gt;&lt;P&gt;&lt;STRONG&gt;Facade Pattern&lt;/STRONG&gt;&lt;/P&gt;&lt;DIV style="BORDER-BOTTOM: #b2e8ed 1px solid; BORDER-LEFT: #b2e8ed 1px solid; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #e1fdff; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #b2e8ed 1px solid; BORDER-RIGHT: #b2e8ed 1px solid; PADDING-TOP: 10px"&gt;커다란 프로그램을 사용해서 처리를 실행하려면 상호 관련된 많은 클래스를 적절하게 제어해야 합니다. 그렇다면 그 처리를 실행하기 위한 '창구'를 준비해 두는 것이 좋습니다. 그렇게 하면 많은 클래스를 개별적으로 제어하지 않아도 그 창구에 대해서만 역할이 끝나기 때문입니다.&lt;br /&gt;&lt;STRONG&gt;Facade Pattern은 &lt;br /&gt;&lt;/STRONG&gt;&lt;FONT color=#ff0000&gt;- 복잡하게 얽혀있는 것을 정리해서 높은 레벨의 인터페이스를 제공&lt;br /&gt;- 시스템의 내부에 있는 각 클래스의 역할이나 의존관계를 생각해서 정확한 순서로 클래스를 이용&lt;/FONT&gt;&lt;/DIV&gt;&lt;P&gt;&lt;br /&gt;&lt;STRONG&gt;예제프로그램&lt;/STRONG&gt;&lt;/P&gt;&lt;DIV style="BORDER-BOTTOM: #b2e8ed 1px solid; BORDER-LEFT: #b2e8ed 1px solid; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #e1fdff; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #b2e8ed 1px solid; BORDER-RIGHT: #b2e8ed 1px solid; PADDING-TOP: 10px"&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XAZbPtDCzH.png" style="width:539px;height:388px;" alt="" onclick="TC$PRIV_open_img('http://ss.textcube.com/blog/1/10879/attach/XAZbPtDCzH.png')" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XYvgULBgmw.png" style="width:541px;height:145px;" alt="" onclick="TC$PRIV_open_img('http://ss.textcube.com/blog/1/10879/attach/XYvgULBgmw.png')" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;a href="http://ss.textcube.com/blog/1/10879/attach/XPkbeDTKyD.alz/Facade%20Pattern.alz" rel="enclosure" &gt;&lt;img src="http://ss.textcube.com/service/blog/image/extension/unknown.gif" alt="" style="vertical-align: middle;" /&gt; Facade Pattern.alz&lt;/a&gt;&lt;/div&gt;&lt;/DIV&gt;&lt;P&gt;&lt;br /&gt;&lt;STRONG&gt;Facade Pattern의 등장인물&lt;/STRONG&gt;&lt;/P&gt;&lt;DIV style="BORDER-BOTTOM: #b2e8ed 1px solid; BORDER-LEFT: #b2e8ed 1px solid; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #e1fdff; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #b2e8ed 1px solid; BORDER-RIGHT: #b2e8ed 1px solid; PADDING-TOP: 10px"&gt;&lt;STRONG&gt;Facade(정면)의 역할&lt;br /&gt;&lt;/STRONG&gt;: 시스템을 구성하고 있는 그 밖의 많은 역할에 대해 단순한 창구&lt;br /&gt;&amp;nbsp; 예제프로그램에서 PageMaker&lt;br /&gt;&lt;STRONG&gt;☞ 시스템을 구성하고 있는 그 밖의 많은 역할&lt;br /&gt;&lt;/STRONG&gt;&lt;p id="more-103-0" class="moreless_fold" style="color: #000000; padding: 0 0 0 10px;"&gt;&lt;span style="cursor: pointer;" onclick="if (window.TC$PRIV_toggleMoreLessBlogger != undefined) {TC$PRIV_toggleMoreLessBlogger(this, '103-0','펼쳐두기..','접어두기..'); return false;} else {document.getElementById('content-103-0').style.display='';}"&gt;      펼쳐두기..&lt;/span&gt;&lt;/p&gt;  &lt;div id="content-103-0" class="moreless_content" style="display: none; border: 1px dashed #cccccc; background-color: #f3f3f3; margin: 0 10px padding: 5px;"&gt;시스템을 구성하는 다른 많은 역할은 각각의 임무를 실행하지만 Facade 역할에 대해서는 신경스지 않습니다. Facade 역할에서 호출되는 임무를 실행하지만, 다른 역할이 Facade역할을 호출하는 일은 없습니다. 예제 프로그램에서는 Database 클래스와 HtmlWriter 클래스가 이 역할입니다.&lt;/DIV&gt;&lt;br /&gt;&lt;STRONG&gt;Client(의뢰인)의 역할&lt;br /&gt;&lt;/STRONG&gt;: Facade 패턴을 이용하는 역할&lt;br /&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XFNs6qzpH1.png" style="width:536px;height:436px;" alt="" onclick="TC$PRIV_open_img('http://ss.textcube.com/blog/1/10879/attach/XFNs6qzpH1.png')" /&gt;&lt;/div&gt;&lt;/DIV&gt;&lt;P&gt;&lt;br /&gt;&amp;nbsp;&lt;/P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2357933784790449713-3710014836481158968?l=akangels-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akangels-textcube.blogspot.com/feeds/3710014836481158968/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://akangels-textcube.blogspot.com/2009/11/facade-pattern.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/3710014836481158968'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/3710014836481158968'/><link rel='alternate' type='text/html' href='http://akangels-textcube.blogspot.com/2009/11/facade-pattern.html' title='Facade Pattern'/><author><name>아크엔젤스</name><uri>http://www.blogger.com/profile/10209348568937169243</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2357933784790449713.post-5075331787808264480</id><published>2009-11-18T14:38:00.000+09:00</published><updated>2011-01-29T19:57:27.831+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='글씨 깨짐'/><category scheme='http://www.blogger.com/atom/ns#' term='파일 입출력'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><title type='text'>파일 입출력시 글씨 깨짐현상 방지</title><content type='html'>&lt;script src='http://ss.textcube.com/service/blog/script/blogger.js' type='text/javascript'&gt;&lt;/script&gt;&lt;P&gt;파일을 만들어 출력할때에 다음과 같이 글씨가 깨져 나오는 현상이 발생하는 경우가 있다.&lt;/P&gt;&lt;DIV style="BORDER-BOTTOM: #b2e8ed 1px solid; BORDER-LEFT: #b2e8ed 1px solid; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #e1fdff; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #b2e8ed 1px solid; BORDER-RIGHT: #b2e8ed 1px solid; PADDING-TOP: 10px"&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XKlz762bJ4.jpg" style="width:529px;height:137px;" alt="" onclick="TC$PRIV_open_img('http://ss.textcube.com/blog/1/10879/attach/XKlz762bJ4.jpg')" /&gt;&lt;/div&gt;&lt;br /&gt;문제의 소스(?)&lt;br /&gt;&lt;p id="more-102-0" class="moreless_fold" style="color: #000000; padding: 0 0 0 10px;"&gt;&lt;span style="cursor: pointer;" onclick="if (window.TC$PRIV_toggleMoreLessBlogger != undefined) {TC$PRIV_toggleMoreLessBlogger(this, '102-0','펼쳐두기..','접어두기..'); return false;} else {document.getElementById('content-102-0').style.display='';}"&gt;      펼쳐두기..&lt;/span&gt;&lt;/p&gt;  &lt;div id="content-102-0" class="moreless_content" style="display: none; border: 1px dashed #cccccc; background-color: #f3f3f3; margin: 0 10px padding: 5px;"&gt;HtmlWriter writer = new HtmlWriter(new StreamWriter(filename));&lt;/DIV&gt;&lt;/DIV&gt;&lt;P&gt;&lt;br /&gt;다음과 같이 고쳐주면 해결된다.&lt;/P&gt;&lt;DIV style="BORDER-BOTTOM: #b2e8ed 1px solid; BORDER-LEFT: #b2e8ed 1px solid; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #e1fdff; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #b2e8ed 1px solid; BORDER-RIGHT: #b2e8ed 1px solid; PADDING-TOP: 10px"&gt;&lt;P&gt;고쳐진 소스&lt;/P&gt;&lt;p id="more-102-1" class="moreless_fold" style="color: #000000; padding: 0 0 0 10px;"&gt;&lt;span style="cursor: pointer;" onclick="if (window.TC$PRIV_toggleMoreLessBlogger != undefined) {TC$PRIV_toggleMoreLessBlogger(this, '102-1','펼쳐두기..','접어두기..'); return false;} else {document.getElementById('content-102-1').style.display='';}"&gt;      펼쳐두기..&lt;/span&gt;&lt;/p&gt;  &lt;div id="content-102-1" class="moreless_content" style="display: none; border: 1px dashed #cccccc; background-color: #f3f3f3; margin: 0 10px padding: 5px;"&gt;HtmlWriter writer = new HtmlWriter(new StreamWriter(filename, true, System.Text.Encoding.Default));&lt;br /&gt;// 글씨 깨짐 현상을 방지하기 위해 System.Text.Encoding.Default 넣음&lt;br /&gt;&lt;/DIV&gt;&lt;P&gt;&lt;br /&gt;해결된 화면&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XEDY2nnaVk.jpg" style="width:532px;height:137px;" alt="" onclick="TC$PRIV_open_img('http://ss.textcube.com/blog/1/10879/attach/XEDY2nnaVk.jpg')" /&gt;&lt;/div&gt;&lt;/P&gt;&lt;/DIV&gt;&lt;P&gt;&lt;br /&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2357933784790449713-5075331787808264480?l=akangels-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akangels-textcube.blogspot.com/feeds/5075331787808264480/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://akangels-textcube.blogspot.com/2009/11/%ED%8C%8C%EC%9D%BC-%EC%9E%85%EC%B6%9C%EB%A0%A5%EC%8B%9C-%EA%B8%80%EC%94%A8-%EA%B9%A8%EC%A7%90%ED%98%84%EC%83%81-%EB%B0%A9%EC%A7%80.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/5075331787808264480'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/5075331787808264480'/><link rel='alternate' type='text/html' href='http://akangels-textcube.blogspot.com/2009/11/%ED%8C%8C%EC%9D%BC-%EC%9E%85%EC%B6%9C%EB%A0%A5%EC%8B%9C-%EA%B8%80%EC%94%A8-%EA%B9%A8%EC%A7%90%ED%98%84%EC%83%81-%EB%B0%A9%EC%A7%80.html' title='파일 입출력시 글씨 깨짐현상 방지'/><author><name>아크엔젤스</name><uri>http://www.blogger.com/profile/10209348568937169243</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2357933784790449713.post-1800747983598769945</id><published>2009-11-13T08:24:00.000+09:00</published><updated>2011-01-29T19:57:27.717+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Design pattern'/><title type='text'>Java 언어로 배우는 디자인 패턴 입문</title><content type='html'>&lt;script src='http://ss.textcube.com/service/blog/script/blogger.js' type='text/javascript'&gt;&lt;/script&gt;&lt;P&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XebMPyBgqe.jpg" style="width:319px;height:400px;" alt=""  /&gt;&lt;/div&gt;&lt;/P&gt;&lt;P align=center&gt;현재 Java 언어로 배우는 디자인 패턴 입문 이란 책으로.. 디자인 패턴을 공부하고있다.&lt;/P&gt;&lt;P align=center&gt;물론.... 이 책 하나만을 가지고 하는 것은 아니다.. 단지.. 중점을 둔책이다. 왜냐하면..&lt;/P&gt;&lt;P align=center&gt;쉬우니까..;; &lt;/P&gt;&lt;P align=center&gt;예전에 디자인 패턴에 관심이 많아서 학교 도서관에서 책을 빌려서 해봤었는데.. &lt;/P&gt;&lt;P align=center&gt;보는데 그냥 답답했었다.. 그런데 이책은 그래도..좀 괜찮은 듯하다.&lt;/P&gt;&lt;P align=center&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=center&gt;앞으로의 올릴 디자인 패턴관련 글은.. 거의.. 이책이 출처이다.&lt;/P&gt;&lt;P align=center&gt;자바로 예제프로그램이 만들어져있어서..&lt;/P&gt;&lt;P align=center&gt;모두 C#으로 바꾸어 놓을가한다..&lt;/P&gt;&lt;P align=center&gt;왜냐하면... Visual Stdio에 길들여진 나로서는.. 보기 편하기때문이다..&lt;/P&gt;&lt;P align=center&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=center&gt;어쨌든.. 패턴공부하면서 느끼는거지만 객체가 무엇인지.. 프로그램을 만들때&lt;/P&gt;&lt;P align=center&gt;설계가 얼마나 중요한지.. 설계할때 패턴을 알면 얼마나 편할지..&lt;/P&gt;&lt;P align=center&gt;새삼 느끼게 된다.&lt;/P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2357933784790449713-1800747983598769945?l=akangels-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akangels-textcube.blogspot.com/feeds/1800747983598769945/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://akangels-textcube.blogspot.com/2009/11/java-%EC%96%B8%EC%96%B4%EB%A1%9C-%EB%B0%B0%EC%9A%B0%EB%8A%94-%EB%94%94%EC%9E%90%EC%9D%B8-%ED%8C%A8%ED%84%B4-%EC%9E%85%EB%AC%B8.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/1800747983598769945'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/1800747983598769945'/><link rel='alternate' type='text/html' href='http://akangels-textcube.blogspot.com/2009/11/java-%EC%96%B8%EC%96%B4%EB%A1%9C-%EB%B0%B0%EC%9A%B0%EB%8A%94-%EB%94%94%EC%9E%90%EC%9D%B8-%ED%8C%A8%ED%84%B4-%EC%9E%85%EB%AC%B8.html' title='Java 언어로 배우는 디자인 패턴 입문'/><author><name>아크엔젤스</name><uri>http://www.blogger.com/profile/10209348568937169243</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2357933784790449713.post-2499860392057913805</id><published>2009-11-13T08:15:00.000+09:00</published><updated>2011-01-29T19:57:27.571+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Design pattern'/><title type='text'>Chain of Responsibility Pattern</title><content type='html'>&lt;script src='http://ss.textcube.com/service/blog/script/blogger.js' type='text/javascript'&gt;&lt;/script&gt;&lt;P&gt;&lt;STRONG&gt;Chain of Responsibility Pattern&lt;/STRONG&gt;&lt;/P&gt;&lt;DIV style="BORDER-BOTTOM: #b2e8ed 1px solid; BORDER-LEFT: #b2e8ed 1px solid; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #e1fdff; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #b2e8ed 1px solid; BORDER-RIGHT: #b2e8ed 1px solid; PADDING-TOP: 10px"&gt;: 책임 떠넘기기&lt;br /&gt;&lt;br /&gt;어떤 서류를 받으러 회사에 갔다고 합시다. 회사의 안내센터에서 물어보았더니 영업부로 가라고 합니다. 그래서 영어부에 갔더니 그 서류는 고각관리부에서 취급한다고 합니다. 다시 고객관리부에 갔더니 그 서류는 총무부에서 받을 수 있다고 합니다. 이런 식으로 담당 부서의 담장자를 찾을 때가지 다음 사람, 다음 사람으로 자신의 요구가 차례로 넘겨지는 것이 책임 떠넘기기 입니다.&lt;br /&gt;어떤 요청이 발생했을 때 그 요청을 처리할 오브젝트를 직접 결정할 수 없는 경우, &lt;STRONG&gt;&lt;FONT color=#ff0000&gt;복수의 오브젝트(객체)를 사슬(chain)처럼 연결해 두면 그 오브젝트의 사슬을 차례로 돌아다니면서 목적한 오브젝트를 결정하는 방법&lt;/FONT&gt;&lt;/STRONG&gt;을 생각할 수 있습니다.&lt;br /&gt;이와 같은 패턴을 Chain of Responsibility Pattern 이라고 합니다.&lt;/DIV&gt;&lt;P&gt;&lt;br /&gt;&lt;STRONG&gt;예제 프로그램&lt;/STRONG&gt;&lt;/P&gt;&lt;DIV style="BORDER-BOTTOM: #b2e8ed 1px solid; BORDER-LEFT: #b2e8ed 1px solid; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #e1fdff; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #b2e8ed 1px solid; BORDER-RIGHT: #b2e8ed 1px solid; PADDING-TOP: 10px"&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XFbuY0FTWQ.png" style="width:535px;height:368px;" alt="" onclick="TC$PRIV_open_img('http://ss.textcube.com/blog/1/10879/attach/XFbuY0FTWQ.png')" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XF2Cl8GXRv.png" style="width:538px;height:215px;" alt="" onclick="TC$PRIV_open_img('http://ss.textcube.com/blog/1/10879/attach/XF2Cl8GXRv.png')" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;a href="http://ss.textcube.com/blog/1/10879/attach/XDi4nAF3tF.alz/ChainofResponsibility%20Pattern.alz" rel="enclosure" &gt;&lt;img src="http://ss.textcube.com/service/blog/image/extension/unknown.gif" alt="" style="vertical-align: middle;" /&gt; ChainofResponsibility Pattern.alz&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;/DIV&gt;&lt;P&gt;&lt;br /&gt;&lt;STRONG&gt;Chain of Responsibility Pattern 의 등장인물&lt;/STRONG&gt;&lt;/P&gt;&lt;DIV style="BORDER-BOTTOM: #b2e8ed 1px solid; BORDER-LEFT: #b2e8ed 1px solid; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #e1fdff; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #b2e8ed 1px solid; BORDER-RIGHT: #b2e8ed 1px solid; PADDING-TOP: 10px"&gt;&lt;STRONG&gt;Handler(처리자)의 역할&lt;br /&gt;&lt;/STRONG&gt;: 요구를 처리하는 인터페이스를 결정하는 역할을 하니다.&lt;br /&gt;&amp;nbsp; 예제프로그램에서 Support클래스&lt;br /&gt;&lt;br /&gt;&lt;STRONG&gt;ConcreteHandler(구체적인 처리자)의 역할&lt;br /&gt;&lt;/STRONG&gt;: 요구를 처리하는 구체적인 역할&lt;br /&gt;&amp;nbsp; 예제프로그램에서 NoSupport, LimitSupport, OddSupport, SpecialSupport의 클래스&lt;br /&gt;&lt;br /&gt;&lt;STRONG&gt;Client(요구자)의 역할&lt;br /&gt;&lt;/STRONG&gt;: 최초의 ConcreteHandler 역할에 요구하는 일을 합니다.&lt;br /&gt;&amp;nbsp; 예제프로그램에서 Main 클래스&lt;br /&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XWqJfeknbR.png" style="width:537px;height:280px;" alt="" onclick="TC$PRIV_open_img('http://ss.textcube.com/blog/1/10879/attach/XWqJfeknbR.png')" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/DIV&gt;&lt;P&gt;&lt;br /&gt;&amp;nbsp;&lt;/P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2357933784790449713-2499860392057913805?l=akangels-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akangels-textcube.blogspot.com/feeds/2499860392057913805/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://akangels-textcube.blogspot.com/2009/11/chain-of-responsibility-pattern.html#comment-form' title='1개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/2499860392057913805'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/2499860392057913805'/><link rel='alternate' type='text/html' href='http://akangels-textcube.blogspot.com/2009/11/chain-of-responsibility-pattern.html' title='Chain of Responsibility Pattern'/><author><name>아크엔젤스</name><uri>http://www.blogger.com/profile/10209348568937169243</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2357933784790449713.post-3308067834121607593</id><published>2009-11-12T09:54:00.000+09:00</published><updated>2011-01-29T19:57:27.433+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Design pattern'/><title type='text'>Visitor Pattern #2</title><content type='html'>&lt;script src='http://ss.textcube.com/service/blog/script/blogger.js' type='text/javascript'&gt;&lt;/script&gt;&lt;P&gt;&lt;STRONG&gt;Visitor 쪽과 Acceptor 쪽의 상호 호출&lt;/STRONG&gt;&lt;/P&gt;&lt;DIV style="BORDER-BOTTOM: #b2e8ed 1px solid; BORDER-LEFT: #b2e8ed 1px solid; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #e1fdff; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #b2e8ed 1px solid; BORDER-RIGHT: #b2e8ed 1px solid; PADDING-TOP: 10px"&gt;하나의 디렉터리에 두 개의 파일이 있을 때의 처리의 흐름을 다이어그램으로 나타내고 있습니다.&lt;br /&gt;① 우선 Main 클래스가 ListVisitor의 인스턴스를 만듭니다. 예제프로그램에서는 다른 Directory나&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; File의 인스턴스도 Main 클래스가 만들지만, 이 시퀸스 다이어그램에서는 생략&lt;br /&gt;② Main은 Directory의 인스턴스에 대해서 accept 메소드를 호출합니다. 이때 인수에는 ListVisitor의 &lt;br /&gt;&amp;nbsp; &amp;nbsp; 인스턴스를 전달하지만 이 다이어그램에서는 생략&lt;br /&gt;③ Directory의 인스턴스는 인수로 전달된 LsitVisitor의 Visit(Directory) 메소드를 호출&lt;br /&gt;④ 그러면 LisiVisitor의 인스턴스는 그 디렉터리 안을 조사해서 최초의 파일인 accept 메소드를 호출&lt;br /&gt;⑤ File의 인스턴스는 인수로 전달된 ListVisitor의 Visit(File) 메소드를 호출합니다. &lt;br /&gt;&amp;nbsp; &amp;nbsp; 이때, LisiVisitor는 Visit(Directory)를 실행 중인 점을 주의하십시오(멀티스레드로서 실행중이라는 &lt;br /&gt;&amp;nbsp; &amp;nbsp; 의미가 아니고 호출이력(콜스택)안에는 Visit(Directory)가 있다는 의미입니다. 다이어그램에서는 &lt;br /&gt;&amp;nbsp; &amp;nbsp; 사각형을 오른족으로 반복해서 표시&lt;br /&gt;⑥ Visit(File)와 accept에서 반환되면 이번에는 다른 File의 인스턴스(동일한 디렉터리의 2번째 파일)&lt;br /&gt;&amp;nbsp; &amp;nbsp; 의 accept 메소드를 호출&lt;br /&gt;⑦ 이전과 동일하게 File의 인스턴스는 Visit(File)의 메소드를 호출, 각 메소드의 처리가 끝나면 호출&lt;br /&gt;&amp;nbsp; &amp;nbsp; 한 곳으로 점점 되돌아가서 마지막에는 Main의 accpet 메소드의 호출로부터 되돌아옵니다.&lt;br /&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XFzF1rxpl5.png" style="width:532px;height:406px;" alt="" onclick="TC$PRIV_open_img('http://ss.textcube.com/blog/1/10879/attach/XFzF1rxpl5.png')" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;STRONG&gt;☞ Directory의 인스턴스나 File의 인스턴스에 대해서는 accpet 메소드가 호출된다.&lt;br /&gt;☞ accept 메소드는 각 인스턴스에서 한번만 호출된다.&lt;br /&gt;☞ ListVisitor의 인스턴스에 대해서는 Visit(Directory)나 Visit(File) 메소드가 호출된다.&lt;br /&gt;☞ Visit(Directory)나 Visit(File)를 처리하고 있는 것은 하나의 ListVisitor의 인스턴스다.&lt;br /&gt;&lt;/STRONG&gt;&lt;/DIV&gt;&lt;P&gt;&lt;br /&gt;&lt;STRONG&gt;Visitor Pattern의 등장인물&lt;/STRONG&gt;&lt;/P&gt;&lt;DIV style="BORDER-BOTTOM: #b2e8ed 1px solid; BORDER-LEFT: #b2e8ed 1px solid; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #e1fdff; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #b2e8ed 1px solid; BORDER-RIGHT: #b2e8ed 1px solid; PADDING-TOP: 10px"&gt;&lt;STRONG&gt;Visitor(방문자)의 역할&lt;br /&gt;&lt;/STRONG&gt;: Visitor는 데이터 구조의 구체적인 요소마다 'xxxx을 방문했다' 라는 visit(xxxx)메소드를 선언&lt;br /&gt;&amp;nbsp; visit(xxxx)는 xxxx를 처리하기 위한 메소드이고, 실제 코드는 ConcreteVisitor 역할에 &lt;br /&gt;&amp;nbsp; 예제프로그램에서 Visitor 클래스&lt;br /&gt;&lt;br /&gt;&lt;STRONG&gt;ConcreteVisitor(구체적인 방문자) 역할&lt;br /&gt;&lt;/STRONG&gt;: Visitor역할의 인터페이스(API)를 구현&lt;br /&gt;&amp;nbsp; visit(xxxx)라는 형태의 메소드를 구현하고, 각각의 ConcreteElement 역할의 처리를 기술&lt;br /&gt;&amp;nbsp; 예제프로그램에서 ListVisitor 클래스&lt;br /&gt;&lt;br /&gt;&lt;STRONG&gt;Element(요소)의 역할&lt;br /&gt;&lt;/STRONG&gt;: Element는 Visitor역할의 방문할 곳을 나타내는 역할로 방문자를 받아들이는 accept 메소드를 선언&lt;br /&gt;&amp;nbsp; accept 메소드의 인수에는 Visitor 역할이 전달&lt;br /&gt;&amp;nbsp; 예제프로그램에서 Acceptor 인터페이스&lt;br /&gt;&lt;br /&gt;&lt;STRONG&gt;ConcreteElement(구체적인 요소) 역할&lt;br /&gt;&lt;/STRONG&gt;: Element역할의 인터페이스(API)를 구현하는 역할&lt;br /&gt;&amp;nbsp; 예제프로그램에서 File 클래스나 Directory 클래스&lt;br /&gt;&lt;br /&gt;&lt;STRONG&gt;ObjectStructure(오브젝트 구조) 역할&lt;br /&gt;&lt;/STRONG&gt;: Element역할의 집합을 취급하는 역할&lt;br /&gt;&amp;nbsp; 예제프로그램에서 Directory 클래스(1인 2역)&lt;br /&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XGZADGhcNh.png" style="width:529px;height:201px;" alt="" onclick="TC$PRIV_open_img('http://ss.textcube.com/blog/1/10879/attach/XGZADGhcNh.png')" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/DIV&gt;&lt;P&gt;&lt;br /&gt;&amp;nbsp;&lt;/P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2357933784790449713-3308067834121607593?l=akangels-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akangels-textcube.blogspot.com/feeds/3308067834121607593/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://akangels-textcube.blogspot.com/2009/11/visitor-pattern-2.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/3308067834121607593'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/3308067834121607593'/><link rel='alternate' type='text/html' href='http://akangels-textcube.blogspot.com/2009/11/visitor-pattern-2.html' title='Visitor Pattern #2'/><author><name>아크엔젤스</name><uri>http://www.blogger.com/profile/10209348568937169243</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2357933784790449713.post-7866418530842368512</id><published>2009-11-12T00:05:00.000+09:00</published><updated>2011-01-29T19:57:27.293+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Design pattern'/><title type='text'>Visitor Pattern</title><content type='html'>&lt;script src='http://ss.textcube.com/service/blog/script/blogger.js' type='text/javascript'&gt;&lt;/script&gt;&lt;P&gt;&lt;STRONG&gt;Visitor Pattern&lt;/STRONG&gt;&lt;/P&gt;&lt;DIV style="BORDER-BOTTOM: #b2e8ed 1px solid; BORDER-LEFT: #b2e8ed 1px solid; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #e1fdff; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #b2e8ed 1px solid; BORDER-RIGHT: #b2e8ed 1px solid; PADDING-TOP: 10px"&gt;Visitor : 방문자&lt;br /&gt;데이터 구조 안에 많은 요소가 저장되어 있고, 그 각 요소에 대해서 무엇인가 '처리'해 간다고 가정합시다. 이때 그 '&lt;STRONG&gt;처리&lt;/STRONG&gt;'의 코드는 어디에 써야 할까요? 일반적으로 생각하면 데이터 구조를 표시하고 있는 클래스 안에 기술할 것입니다. 그러나 만약 그 '처리'가 여러 종류라면 새로운 처리가 필요할 때마다 데이터 구조의 클래스를 수정해야합니다.&lt;br /&gt;&lt;STRONG&gt;&lt;FONT color=#ff0000&gt;Visitor Pattern 에서는 데이터 구조와 처리를 분리합니다.&lt;/FONT&gt;&lt;/STRONG&gt;&lt;FONT style="BACKGROUND-COLOR: #ffffff"&gt; &lt;/FONT&gt;그리고 데이터 구조안을 돌아다니는 주체인 &lt;STRONG&gt;방문자&lt;/STRONG&gt;를 나타내는 클래스를 준비해서 그 클래스에게 처리를 위임합니다. 그렇다면 새로운 처리를 추가하고 싶을 때에는 새로운 방문자를 만들면 됩니다. 그리고 데이터 구조는 문을 두드리고 있는 방문자를 받아들이면 됩니다.&lt;/DIV&gt;&lt;P&gt;&lt;br /&gt;&lt;STRONG&gt;예제 프로그램&lt;/STRONG&gt;&lt;/P&gt;&lt;DIV style="BORDER-BOTTOM: #b2e8ed 1px solid; BORDER-LEFT: #b2e8ed 1px solid; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #e1fdff; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #b2e8ed 1px solid; BORDER-RIGHT: #b2e8ed 1px solid; PADDING-TOP: 10px"&gt;&lt;STRONG&gt;클래스 다이어그램&lt;/STRONG&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XA10ufDjOh.jpg" style="width:534px;height:623px;" alt="" onclick="TC$PRIV_open_img('http://ss.textcube.com/blog/1/10879/attach/XA10ufDjOh.jpg')" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XTbjHQW9yq.png" style="width:524px;height:205px;" alt="" onclick="TC$PRIV_open_img('http://ss.textcube.com/blog/1/10879/attach/XTbjHQW9yq.png')" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;a href="http://ss.textcube.com/blog/1/10879/attach/XMCVNNTJ0f.alz/VisitorPattern.alz" rel="enclosure" &gt;&lt;img src="http://ss.textcube.com/service/blog/image/extension/unknown.gif" alt="" style="vertical-align: middle;" /&gt; VisitorPattern.alz&lt;/a&gt;&lt;/div&gt;&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;출처 : Java 언어로 배우는 디자인 패턴 입문&lt;/P&gt;&lt;P&gt;// 자바소스는 앞에 올린 자료에서 구하실수 있습니다.&lt;br /&gt;&lt;/P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2357933784790449713-7866418530842368512?l=akangels-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akangels-textcube.blogspot.com/feeds/7866418530842368512/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://akangels-textcube.blogspot.com/2009/11/visitor-pattern.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/7866418530842368512'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/7866418530842368512'/><link rel='alternate' type='text/html' href='http://akangels-textcube.blogspot.com/2009/11/visitor-pattern.html' title='Visitor Pattern'/><author><name>아크엔젤스</name><uri>http://www.blogger.com/profile/10209348568937169243</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2357933784790449713.post-6086210595655457107</id><published>2009-11-10T13:07:00.000+09:00</published><updated>2011-01-29T19:57:27.165+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Design pattern'/><title type='text'>Decorator Pattern</title><content type='html'>&lt;script src='http://ss.textcube.com/service/blog/script/blogger.js' type='text/javascript'&gt;&lt;/script&gt;&lt;P&gt;&lt;STRONG&gt;Decorator Pattern&lt;/STRONG&gt;&lt;/P&gt;&lt;DIV style="BORDER-BOTTOM: #b2e8ed 1px solid; BORDER-LEFT: #b2e8ed 1px solid; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #e1fdff; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #b2e8ed 1px solid; BORDER-RIGHT: #b2e8ed 1px solid; PADDING-TOP: 10px"&gt;스펀지 케이크가 1개 있다고 가정합니다. &lt;br /&gt;크림을 바르면 크림케이크, 여기에 딸기를 얹으면 딸기케이크, 초콜릿으로 장식을 하고 이름을 쓰고 나이 수만큼 초를 꽂으면 생일 케이크가 완성됩니다.&lt;br /&gt;스펀지 케이크도, 크림케이크도, 딸기 케이크도, 생일 케이크도 처음에는 다 같은 스펀지 케이크입니다. 그러나 크림을 바르고 딸기를 얹는 등 다양한 장식을 하면 더욱 맛있고 각각의 목적에 어울리는 케이크가 됩니다.&lt;br /&gt;&lt;br /&gt;오브젝트(객제)도 이런 케이크와 비슷한 경우가 있습니다. 우선 스펀지 케이크와 같은 중심이 되는 오브젝트가 있습니다. 이 오브젝트에 장식이 되는 기능을 하나씩 추가하면 좀더 목적에 맞는 오브젝트가 완성됩니다. &lt;STRONG&gt;&lt;FONT color=#ff0000&gt;이와 같이 오브젝트에 장식을 해 나가는 디자인 패턴을 Decorator 패턴이라고 합니다.&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/DIV&gt;&lt;P&gt;&lt;br /&gt;&lt;STRONG&gt;예제 프로그램&lt;/STRONG&gt;&lt;/P&gt;&lt;DIV style="BORDER-BOTTOM: #b2e8ed 1px solid; BORDER-LEFT: #b2e8ed 1px solid; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #e1fdff; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #b2e8ed 1px solid; BORDER-RIGHT: #b2e8ed 1px solid; PADDING-TOP: 10px"&gt;: 여기에서 만들 예제 프로그램은 문자열의 주변에 장식을 만들어서 표시하는 것입니다. &lt;br /&gt;&amp;nbsp; 장식이란 -, +, | 과 같은 특수문자&lt;br /&gt;&lt;br /&gt;&lt;STRONG&gt;클래스 종류&lt;/STRONG&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XD7b9wRPOo.png" style="width:539px;height:204px;" alt="" onclick="TC$PRIV_open_img('http://ss.textcube.com/blog/1/10879/attach/XD7b9wRPOo.png')" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;STRONG&gt;예제프로그램의 클래스 다이어그램&lt;/STRONG&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XYYk47EJGo.png" style="width:527px;height:636px;" alt="" onclick="TC$PRIV_open_img('http://ss.textcube.com/blog/1/10879/attach/XYYk47EJGo.png')" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;a href="http://ss.textcube.com/blog/1/10879/attach/XSEhSPA2wo.alz/DecoratorPattern.alz" rel="enclosure" &gt;&lt;img src="http://ss.textcube.com/service/blog/image/extension/unknown.gif" alt="" style="vertical-align: middle;" /&gt; DecoratorPattern.alz&lt;/a&gt;&lt;/div&gt;&lt;/DIV&gt;&lt;P&gt;&lt;br /&gt;&lt;STRONG&gt;Decorator 패턴의 등장인물&lt;/STRONG&gt;&lt;/P&gt;&lt;DIV style="BORDER-BOTTOM: #b2e8ed 1px solid; BORDER-LEFT: #b2e8ed 1px solid; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #e1fdff; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #b2e8ed 1px solid; BORDER-RIGHT: #b2e8ed 1px solid; PADDING-TOP: 10px"&gt;&lt;STRONG&gt;Component의 역할&lt;br /&gt;&lt;/STRONG&gt;: 기능을 추가할 때 핵심이 되는 역할, 서두의 케이크에 비교하면 장식하기 전의 스펀지 케이크에 &lt;br /&gt;&amp;nbsp; 해당합니다. Component역할은 스펀지 케이크의 인터페이스(API)만을 결정합니다&lt;br /&gt;&amp;nbsp; 예제프로그램에서는 Display 클래스&lt;br /&gt;&lt;br /&gt;&lt;STRONG&gt;ConcreteComponent의 역할&lt;br /&gt;&lt;/STRONG&gt;: Component 역할의 인스턴스(API)를 구현하고 있는 구체적인 스펀지 케이크입니다.&lt;br /&gt;&amp;nbsp; 예제프로그램에서는 StringDisplay 클래스&lt;br /&gt;&lt;br /&gt;&lt;STRONG&gt;Decorator(장식자)의 역할&lt;br /&gt;&lt;/STRONG&gt;: Component 역할과 동일한 인터페이스(API)를 가지며, 또한 이 Decorator 역할이 장식할 대상이 &lt;br /&gt;&amp;nbsp; 되는 Component 역할도 가지고 있습니다. 이 역할은 자신이 장식하고 있는 대상을 알고있습니다.&lt;br /&gt;&amp;nbsp; 예제프로그램에서는 Border 클래스&lt;br /&gt;&lt;br /&gt;&lt;STRONG&gt;ConcreteDecorator(구제척인 장식자)의 역할&lt;br /&gt;&lt;/STRONG&gt;: 구체적인 Decorator의 역할입니다. &lt;br /&gt;&amp;nbsp; 예제프로그램에서는 SideBorder 클래스와 FullBorder 클래스&lt;br /&gt;&lt;br /&gt;&lt;STRONG&gt;Decorator 패턴의 클래스 다이어그램&lt;/STRONG&gt;&lt;br /&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XWak1mSxgA.png" style="width:518px;height:625px;" alt="" onclick="TC$PRIV_open_img('http://ss.textcube.com/blog/1/10879/attach/XWak1mSxgA.png')" /&gt;&lt;/div&gt;&lt;/DIV&gt;&lt;P&gt;&lt;br /&gt;출처 : Java 언어로 배우는 디자인 패턴 입문&lt;/P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2357933784790449713-6086210595655457107?l=akangels-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akangels-textcube.blogspot.com/feeds/6086210595655457107/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://akangels-textcube.blogspot.com/2009/11/decorator-pattern.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/6086210595655457107'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/6086210595655457107'/><link rel='alternate' type='text/html' href='http://akangels-textcube.blogspot.com/2009/11/decorator-pattern.html' title='Decorator Pattern'/><author><name>아크엔젤스</name><uri>http://www.blogger.com/profile/10209348568937169243</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2357933784790449713.post-8327474767918897070</id><published>2009-11-08T02:37:00.000+09:00</published><updated>2011-01-29T19:57:27.009+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Diary'/><title type='text'>갈림길</title><content type='html'>&lt;script src='http://ss.textcube.com/service/blog/script/blogger.js' type='text/javascript'&gt;&lt;/script&gt;&lt;P&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XY1lGNxQsr.bmp" style="width:343px;height:319px;" alt=""  /&gt;&lt;/div&gt;&lt;/P&gt;&lt;P align=center&gt;갈림길..&lt;/P&gt;&lt;P align=center&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=center&gt;내가 하고싶은 일.. 프로그래머.&lt;/P&gt;&lt;P align=center&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=center&gt;난 프로그래밍 하는것을 좋아한다. 프로그래밍이 쉬워서 그런것은 아니다.&lt;/P&gt;&lt;P align=center&gt;물론 프로그래밍 정말 어렵다. 하지만...&lt;/P&gt;&lt;P align=center&gt;그 어려운 것을 해결하고 풀었을때 난 정말 기쁘다.&lt;/P&gt;&lt;P align=center&gt;그 기분을 몇번이고 반복하고 또 반복하고 싶어한다. 절대 질릴수 없는 그 기쁨..&lt;/P&gt;&lt;P align=center&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=center&gt;그래서 시작된 나의 프로그래밍...&lt;/P&gt;&lt;P align=center&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=center&gt;지금 난 갈림길에.. 아니.. 갈림길중 또 하나를 선택하였다..&lt;/P&gt;&lt;P align=center&gt;처음에는 프로그래머가 되자는.. 길을..&lt;/P&gt;&lt;P align=center&gt;이번에는 프로그래머로서 좀더 발전하기위해. 영어를 하자는 길을.&lt;/P&gt;&lt;P align=center&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=center&gt;이 선택으로 나의 미래가 어떻게 바뀔지는 나도.. 누구도 모른다.&lt;/P&gt;&lt;P align=center&gt;하지만.. 난.. 그 어떤 선택보다 지금의 선택이 좋은 선택이라고 믿고있다.&lt;/P&gt;&lt;P align=center&gt;난 우물안 개구리가 아닌.. 좀더 넓은 무대에서 놀아보고 싶다.&lt;/P&gt;&lt;P align=center&gt;좀더 좀더 큰 무대에서 말이다.&lt;/P&gt;&lt;P align=center&gt;작은 나는 싫다.&lt;/P&gt;&lt;P align=center&gt;큰 꿈을 가진 내가 되고싶다.&lt;/P&gt;&lt;P align=center&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=center&gt;책을 많이 읽지않는 내가.. 선택에 대한 이야기가 나오는 책을 본적이 있다.&lt;/P&gt;&lt;P align=center&gt;그 어떤 결과가 나왔던 그것은 자기 자신이 선택한 결과라는 머 그런 내용이다.&lt;/P&gt;&lt;P align=center&gt;이번 나의선택으로 인해 새로운 결과가 나올것이다.&lt;/P&gt;&lt;P align=center&gt;그 결과가 좋게 하기위해 나는 노력하고 또 노력할것이다.&lt;/P&gt;&lt;P align=center&gt;나중에 후회하는것은 정말 싫으니까..&lt;/P&gt;&lt;P align=center&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=center&gt;그림출처 : &lt;A href="http://ask.nate.com/qna/view.html?n=6278867"&gt;http://ask.nate.com/qna/view.html?n=6278867&lt;/A&gt;&lt;/P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2357933784790449713-8327474767918897070?l=akangels-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akangels-textcube.blogspot.com/feeds/8327474767918897070/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://akangels-textcube.blogspot.com/2009/11/%EA%B0%88%EB%A6%BC%EA%B8%B8.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/8327474767918897070'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/8327474767918897070'/><link rel='alternate' type='text/html' href='http://akangels-textcube.blogspot.com/2009/11/%EA%B0%88%EB%A6%BC%EA%B8%B8.html' title='갈림길'/><author><name>아크엔젤스</name><uri>http://www.blogger.com/profile/10209348568937169243</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2357933784790449713.post-3069467420431643408</id><published>2009-11-05T12:35:00.000+09:00</published><updated>2011-01-29T19:57:26.884+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Compostie Pattern'/><category scheme='http://www.blogger.com/atom/ns#' term='Design pattern'/><title type='text'>Composite Pattern</title><content type='html'>&lt;script src='http://ss.textcube.com/service/blog/script/blogger.js' type='text/javascript'&gt;&lt;/script&gt;&lt;P&gt;&lt;STRONG&gt;Composite Pattern&lt;/STRONG&gt;&lt;/P&gt;&lt;DIV style="BORDER-BOTTOM: #b2e8ed 1px solid; BORDER-LEFT: #b2e8ed 1px solid; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #e1fdff; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #b2e8ed 1px solid; BORDER-RIGHT: #b2e8ed 1px solid; PADDING-TOP: 10px"&gt;- 그릇과 내용물을 동일시해서 재귀적인 구조를 만들기 위한 디자인 패턴&lt;br /&gt;&lt;br /&gt;예: 어떤 디렉터리 안에 무엇이 있는지를 차례대로 조사한다고 가정&lt;br /&gt;&amp;nbsp; 이때, 차례로 조사하는 것은 하위 디렉터리일지도 모르고 파일일지도 모릅니다. 한마디로 말하면 '디렉터리 엔트리'를 차례대로 조사하는 것입니다. 디렉터리와 파일을 모아서 디렉터리 엔트리로 취급하듯이 그릇과 내용물을 같은종류로 취급하면 편리한 경우가 있습니다. 그릇안에는 내용물을 넣을수 있고 더욱 작은 그릇을 넣을수 있습니다. 그리고 그 작은 그릇안에 더 작은 그릇을 넣고... 이런 식으로 '상자안의 상자;처럼 된 구조, 즉 재귀적인 구조를 만들 수 있습니다.&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;예제 프로그램&lt;/STRONG&gt;&lt;/P&gt;&lt;DIV style="BORDER-BOTTOM: #b2e8ed 1px solid; BORDER-LEFT: #b2e8ed 1px solid; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #e1fdff; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #b2e8ed 1px solid; BORDER-RIGHT: #b2e8ed 1px solid; PADDING-TOP: 10px"&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XF9k5hCYSx.png" style="width:539px;height:177px;" alt="" onclick="TC$PRIV_open_img('http://ss.textcube.com/blog/1/10879/attach/XF9k5hCYSx.png')" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XPe5lkjr1J.png" style="width:514px;height:499px;" alt="" onclick="TC$PRIV_open_img('http://ss.textcube.com/blog/1/10879/attach/XPe5lkjr1J.png')" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/DIV&gt;&lt;P&gt;&lt;br /&gt;&lt;STRONG&gt;Composite 패턴의 등장인물&lt;/STRONG&gt;&lt;/P&gt;&lt;DIV style="BORDER-BOTTOM: #b2e8ed 1px solid; BORDER-LEFT: #b2e8ed 1px solid; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #e1fdff; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #b2e8ed 1px solid; BORDER-RIGHT: #b2e8ed 1px solid; PADDING-TOP: 10px"&gt;&lt;STRONG&gt;Leaf(나뭇잎)의 역할&lt;br /&gt;&lt;/STRONG&gt;: Leaf는 '내용물'을 표시하는 역할을 하며 내부에는 다른것을 넣을 수 없습니다.&lt;br /&gt;예제프로그램에서 File 클래스&lt;br /&gt;&lt;br /&gt;&lt;STRONG&gt;Composite(복합체)의 역할&lt;br /&gt;&lt;/STRONG&gt;: Composite는 '그릇'을 나타내는 역할을 하며 Leaf 역할이나 Composite 역할을 넣을 수 있습니다.&lt;br /&gt;예제프로그램에서 Directory 클래스&lt;br /&gt;&lt;br /&gt;&lt;STRONG&gt;Component의 역할&lt;br /&gt;&lt;/STRONG&gt;: Leaf 역할과 Composite 역할을 동일시 하는 역할을 합니다. Component는 Leaf 역할과 Composite 역할에 공통적인 상위 클래스로 실현합니다.&lt;br /&gt;예제프로그램에서는 Entry 클래스&lt;br /&gt;&lt;br /&gt;&lt;STRONG&gt;Client(의뢰자)의 역할&lt;br /&gt;&lt;/STRONG&gt;: Composite의 사용자&lt;br /&gt;예제프로그램에서는 Main 클래스&lt;br /&gt;&lt;br /&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XbIE5TVfaW.png" style="width:520px;height:338px;" alt="" onclick="TC$PRIV_open_img('http://ss.textcube.com/blog/1/10879/attach/XbIE5TVfaW.png')" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;a href="http://ss.textcube.com/blog/1/10879/attach/Xbf0CmmAK0.alz/CompositePattern.alz" rel="enclosure" &gt;&lt;img src="http://ss.textcube.com/service/blog/image/extension/unknown.gif" alt="" style="vertical-align: middle;" /&gt; CompositePattern.alz&lt;/a&gt;&lt;/div&gt;&lt;/DIV&gt;&lt;P&gt;&lt;br /&gt;&lt;br /&gt;출처 : Java언어로 배우는 디자인 패턴 입문&lt;/P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2357933784790449713-3069467420431643408?l=akangels-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akangels-textcube.blogspot.com/feeds/3069467420431643408/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://akangels-textcube.blogspot.com/2009/11/composite-pattern.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/3069467420431643408'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/3069467420431643408'/><link rel='alternate' type='text/html' href='http://akangels-textcube.blogspot.com/2009/11/composite-pattern.html' title='Composite Pattern'/><author><name>아크엔젤스</name><uri>http://www.blogger.com/profile/10209348568937169243</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2357933784790449713.post-1753146722234964372</id><published>2009-10-29T10:47:00.000+09:00</published><updated>2011-01-29T19:57:26.730+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='일관성 없는 액세스 가능성'/><category scheme='http://www.blogger.com/atom/ns#' term='일관성'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='가능성'/><category scheme='http://www.blogger.com/atom/ns#' term='액세스'/><title type='text'>일관성 없는 액세스 가능성</title><content type='html'>&lt;P&gt;일관성 없는 액세스 가능성: 'identifier' 제약 조건 형식이 'identifier'보다 액세스하기 어렵습니다.&lt;br /&gt;Inconsistent accessibility: constraint type 'identifier' is less accessible than 'identifier' &lt;/P&gt;&lt;DIV class=introduction&gt;&lt;P&gt;제약 조건에서 제네릭 매개 변수에 대한 액세스 가능성을 제네릭 클래스 자체에 대한 액세스 가능성보다 낮게 적용하지 않을 수도 있습니다. 다음 예제에서는 제네릭 클래스 C&amp;lt;T&amp;gt;가 public으로 선언되었지만 제약 조건에서는 T에 내부 인터페이스를 구현하도록 하려고 합니다. 이러한 제약 조건이 허용되더라도 내부 액세스 권한을 가진 클라이언트만이 클래스에 대한 매개 변수를 만들 수 있으므로 해당 클라이언트만이 클래스를 사용할 수 있습니다.&lt;/P&gt;&lt;P&gt;이 오류를 해결하려면 제네릭 클래스에 대한 액세스 수준이 제네릭 클래스 범위에 해당하는 인터페이스나 클래스에 대한 액세스 수준과 같거나 더 제한적이어야 합니다.&lt;/P&gt;&lt;P&gt;다음 샘플에서는 CS0703 오류가 발생하는 경우를 보여 줍니다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/DIV&gt;&lt;P&gt;&lt;A href="http://msdn.microsoft.com/ko-kr/library/892fd5yc.aspx"&gt;http://msdn.microsoft.com/ko-kr/library/892fd5yc.aspx&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;참고로.. C#에서 기본적으로 class 만들면&lt;/P&gt;&lt;DIV style="BORDER-BOTTOM: #b2e8ed 1px solid; BORDER-LEFT: #b2e8ed 1px solid; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #e1fdff; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #b2e8ed 1px solid; BORDER-RIGHT: #b2e8ed 1px solid; PADDING-TOP: 10px"&gt;&lt;P&gt;namespace A&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; class C&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; {...}&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;이렇게 생성됩니다. 즉, public 이 아닌것입니다.&lt;/P&gt;&lt;/DIV&gt;&lt;P&gt;&lt;br /&gt;&amp;nbsp;&lt;/P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2357933784790449713-1753146722234964372?l=akangels-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akangels-textcube.blogspot.com/feeds/1753146722234964372/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://akangels-textcube.blogspot.com/2009/10/%EC%9D%BC%EA%B4%80%EC%84%B1-%EC%97%86%EB%8A%94-%EC%95%A1%EC%84%B8%EC%8A%A4-%EA%B0%80%EB%8A%A5%EC%84%B1.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/1753146722234964372'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/1753146722234964372'/><link rel='alternate' type='text/html' href='http://akangels-textcube.blogspot.com/2009/10/%EC%9D%BC%EA%B4%80%EC%84%B1-%EC%97%86%EB%8A%94-%EC%95%A1%EC%84%B8%EC%8A%A4-%EA%B0%80%EB%8A%A5%EC%84%B1.html' title='일관성 없는 액세스 가능성'/><author><name>아크엔젤스</name><uri>http://www.blogger.com/profile/10209348568937169243</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2357933784790449713.post-8696307177049882478</id><published>2009-10-29T10:16:00.000+09:00</published><updated>2011-01-29T19:57:26.514+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='strategy pattern'/><category scheme='http://www.blogger.com/atom/ns#' term='Design pattern'/><title type='text'>Strategy Pattern</title><content type='html'>&lt;script src='http://ss.textcube.com/service/blog/script/blogger.js' type='text/javascript'&gt;&lt;/script&gt;&lt;P&gt;&lt;STRONG&gt;전략(Strategy)&lt;/STRONG&gt;&lt;/P&gt;&lt;DIV style="BORDER-BOTTOM: #b2e8ed 1px solid; BORDER-LEFT: #b2e8ed 1px solid; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #e1fdff; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #b2e8ed 1px solid; BORDER-RIGHT: #b2e8ed 1px solid; PADDING-TOP: 10px"&gt;- 적과 싸울 때의 책략&lt;br /&gt;- 군대를 움직일 때의 작전&lt;br /&gt;- 문제를 해결해 나갈 때의 방법&lt;br /&gt;- 프로그래밍에서는 '알고리즘'&lt;/DIV&gt;&lt;P&gt;&lt;br /&gt;&lt;STRONG&gt;Strategy Pattern&lt;/STRONG&gt;&lt;/P&gt;&lt;DIV style="BORDER-BOTTOM: #b2e8ed 1px solid; BORDER-LEFT: #b2e8ed 1px solid; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #e1fdff; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #b2e8ed 1px solid; BORDER-RIGHT: #b2e8ed 1px solid; PADDING-TOP: 10px"&gt;- 알고리즘을 구현한 부분이 모두 교환 가능하도록 함&lt;br /&gt;- 알고리즘(전략,작전,책략)을 교체해서 동일한 문제를 다른 방법으로 해결하는 패턴&lt;/DIV&gt;&lt;P&gt;&lt;br /&gt;Strategy Pattern 의 등장인물&lt;/P&gt;&lt;DIV style="BORDER-BOTTOM: #b2e8ed 1px solid; BORDER-LEFT: #b2e8ed 1px solid; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #e1fdff; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #b2e8ed 1px solid; BORDER-RIGHT: #b2e8ed 1px solid; PADDING-TOP: 10px"&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XJliRNW6bV.png" style="width:542px;height:308px;" alt="" onclick="TC$PRIV_open_img('http://ss.textcube.com/blog/1/10879/attach/XJliRNW6bV.png')" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;STRONG&gt;Strategy의 역할&lt;br /&gt;&lt;/STRONG&gt;- 전략을 이용하기 위한 인터페이스(API)를 결정&lt;br /&gt;- 예제프로그램(Strategy 인터페이스)&lt;br /&gt;&lt;br /&gt;&lt;STRONG&gt;ConcreteStrategy(구체적인 전략)의 역할&lt;br /&gt;&lt;/STRONG&gt;- Strategy의 인터페이스(API)를 실제로 구현&lt;br /&gt;- 예제프로그램(WinningStrategy 클래스, ProbStrategy 클래스)&lt;br /&gt;&lt;br /&gt;&lt;STRONG&gt;Context(문맥)&lt;br /&gt;&lt;/STRONG&gt;- Strategy을 이용하는 역할&lt;br /&gt;- ConcreteStrategy의 인스턴스를 가지고 있으며 필요에 따라 그것을 이용&lt;br /&gt;- 예제프로그램(Player클래스)&lt;/DIV&gt;&lt;P&gt;&lt;br /&gt;&lt;STRONG&gt;일부러 Strategy 역할을 만들 필요가 있을까?&lt;/STRONG&gt;&lt;/P&gt;&lt;DIV style="BORDER-BOTTOM: #b2e8ed 1px solid; BORDER-LEFT: #b2e8ed 1px solid; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #e1fdff; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #b2e8ed 1px solid; BORDER-RIGHT: #b2e8ed 1px solid; PADDING-TOP: 10px"&gt;Strategy 역할을 구현하기만 한다면, ConcreteStrategy의 종류를 변경하기가 쉽다.&lt;br /&gt;예1: &lt;br /&gt;&amp;nbsp;예전의 알고리즘과 개량한 알고리즘의 속도를 비교하고 싶은 경우, 간단히 교체해서 테스트할 수 있다.&lt;br /&gt;예2: &lt;br /&gt;&amp;nbsp;장기 게임에서 사용자의 선택에 따라 사고 루틴의 레벨을 교체하는 것도 간단하게 실행할 수 있다.&lt;/DIV&gt;&lt;P&gt;&lt;br /&gt;&lt;STRONG&gt;실행 중에 교체도 가능&lt;/STRONG&gt;&lt;/P&gt;&lt;DIV style="BORDER-BOTTOM: #b2e8ed 1px solid; BORDER-LEFT: #b2e8ed 1px solid; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #e1fdff; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #b2e8ed 1px solid; BORDER-RIGHT: #b2e8ed 1px solid; PADDING-TOP: 10px"&gt;프로그램 동작 중에 ConcreteStrategy 역할을 교체할 수 있다&lt;br /&gt;예: &lt;br /&gt;&amp;nbsp;메모리가 적은 환경에서는 SlowButLessMemoryStrategy를 사용하고, 메모리가 충분한 환경에서는 FastButMoreMemoryStrategy를 사용한다.&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;예제프로그램&lt;/STRONG&gt;&lt;/P&gt;&lt;DIV style="BORDER-BOTTOM: #b2e8ed 1px solid; BORDER-LEFT: #b2e8ed 1px solid; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #e1fdff; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #b2e8ed 1px solid; BORDER-RIGHT: #b2e8ed 1px solid; PADDING-TOP: 10px"&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XZKLzOWxVo.png" style="width:534px;height:284px;" alt="" onclick="TC$PRIV_open_img('http://ss.textcube.com/blog/1/10879/attach/XZKLzOWxVo.png')" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XJT0fPhbz3.png" style="width:538px;height:210px;" alt="" onclick="TC$PRIV_open_img('http://ss.textcube.com/blog/1/10879/attach/XJT0fPhbz3.png')" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;a href="http://ss.textcube.com/blog/1/10879/attach/XUqHkMx6LS.alz/Strategy%20Pattern.alz" rel="enclosure" &gt;&lt;img src="http://ss.textcube.com/service/blog/image/extension/unknown.gif" alt="" style="vertical-align: middle;" /&gt; Strategy Pattern.alz&lt;/a&gt;&lt;/div&gt;&lt;/DIV&gt;&lt;P&gt;&lt;br /&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;출처 : Java 언어로 배우는 디자인 패턴 입문(영진닷컴)&lt;br /&gt;&lt;/P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2357933784790449713-8696307177049882478?l=akangels-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akangels-textcube.blogspot.com/feeds/8696307177049882478/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://akangels-textcube.blogspot.com/2009/10/strategy-pattern.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/8696307177049882478'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/8696307177049882478'/><link rel='alternate' type='text/html' href='http://akangels-textcube.blogspot.com/2009/10/strategy-pattern.html' title='Strategy Pattern'/><author><name>아크엔젤스</name><uri>http://www.blogger.com/profile/10209348568937169243</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2357933784790449713.post-5656598030394785749</id><published>2009-10-22T12:58:00.000+09:00</published><updated>2011-01-29T19:57:26.360+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Bridge Pattern'/><category scheme='http://www.blogger.com/atom/ns#' term='Design pattern'/><title type='text'>Bridge Pattern #2</title><content type='html'>&lt;script src='http://ss.textcube.com/service/blog/script/blogger.js' type='text/javascript'&gt;&lt;/script&gt;&lt;P&gt;&lt;STRONG&gt;예제프로그램&lt;/P&gt;&lt;DIV style="BORDER-BOTTOM: #b2e8ed 1px solid; BORDER-LEFT: #b2e8ed 1px solid; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #e1fdff; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #b2e8ed 1px solid; BORDER-RIGHT: #b2e8ed 1px solid; PADDING-TOP: 10px"&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XWfaZxSpbT.jpg" style="width:541px;height:192px;" alt="" onclick="TC$PRIV_open_img('http://ss.textcube.com/blog/1/10879/attach/XWfaZxSpbT.jpg')" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/Xb168vEAlf.jpg" style="width:540px;height:403px;" alt="" onclick="TC$PRIV_open_img('http://ss.textcube.com/blog/1/10879/attach/Xb168vEAlf.jpg')" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;a href="http://ss.textcube.com/blog/1/10879/attach/XWexp508rs.alz/BridgePattern.alz" rel="enclosure" &gt;&lt;img src="http://ss.textcube.com/service/blog/image/extension/unknown.gif" alt="" style="vertical-align: middle;" /&gt; BridgePattern.alz&lt;/a&gt;&lt;/div&gt;&lt;/DIV&gt;&lt;P&gt;&lt;/STRONG&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;상속은 견고한 연결이고 위임은 느슨한 연결이다.&lt;/STRONG&gt;&lt;/P&gt;&lt;DIV style="BORDER-BOTTOM: #b2e8ed 1px solid; BORDER-LEFT: #b2e8ed 1px solid; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #e1fdff; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #b2e8ed 1px solid; BORDER-RIGHT: #b2e8ed 1px solid; PADDING-TOP: 10px"&gt;상속은 클래스 확장하기 위한 편리한 방법이지만 클래스가느이 연결을 강하게 고정시킵니다.&lt;br /&gt;소스코드상에서&lt;br /&gt;class SomethingFood extends Something {&lt;br /&gt;...&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;라고 쓰면 SomethingGood 클래스는 Something 클래스의 하위 클래스가 됩니다. 그리고 이 관계는 소스 코드를 고쳐 쓰지 않는 한 바꿀 수 없는 매우 견고한 연결이 됩니다. 프로그램의 필요에 따라서 클래스 간에 관계를 척척 바꾸고 싶을 때에 상속을 사용하는 것은 부적절합니다. 교체할 때마다 소스 코드를 변결할 수 엇ㅂ기 때문입니다. 이와 같은 경우에는 위임을 사용합니다.&lt;br /&gt;예제 프로그램에서는 Dispaly 클래스 내에서 위임이 사용되고 있습니다. Display 클래스의 impl 필드에는 구현되는 인스턴스가 저장되어 있어서&lt;br /&gt;- open 을 실행할때에는 impl.rawOpen()을 호출&lt;br /&gt;- print 를 실행할때에는 impl.rawPrint()를 호출&lt;br /&gt;- close 를 실핼할때에는 impl.rawClose()를 호출&lt;br /&gt;라는 식으로 떠넘기기를 하고 있습니다. 이것이 위임입니다. 상속은 견고한 연결이고 위임은 느슨한 연결이빈다. Display 클래스의 인스턴스를 만드는 관계에서 인수로 전달되어 온 것과 연결되기 때문입니다. &lt;/DIV&gt;&lt;P&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;br /&gt;&amp;nbsp;&lt;/P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2357933784790449713-5656598030394785749?l=akangels-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akangels-textcube.blogspot.com/feeds/5656598030394785749/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://akangels-textcube.blogspot.com/2009/10/bridge-pattern-2.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/5656598030394785749'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/5656598030394785749'/><link rel='alternate' type='text/html' href='http://akangels-textcube.blogspot.com/2009/10/bridge-pattern-2.html' title='Bridge Pattern #2'/><author><name>아크엔젤스</name><uri>http://www.blogger.com/profile/10209348568937169243</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2357933784790449713.post-858858061346160498</id><published>2009-10-13T13:52:00.000+09:00</published><updated>2011-01-29T19:57:26.242+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='기능의 클래스 계층'/><category scheme='http://www.blogger.com/atom/ns#' term='구현의 클래스 계층'/><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Bridge Pattern'/><category scheme='http://www.blogger.com/atom/ns#' term='Design pattern'/><title type='text'>Bridge Pattern #1</title><content type='html'>&lt;script src='http://ss.textcube.com/service/blog/script/blogger.js' type='text/javascript'&gt;&lt;/script&gt;&lt;P&gt;&lt;STRONG&gt;Bridge Pattern&lt;/STRONG&gt;&lt;/P&gt;&lt;DIV style="BORDER-BOTTOM: #b2e8ed 1px solid; BORDER-LEFT: #b2e8ed 1px solid; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #e1fdff; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #b2e8ed 1px solid; BORDER-RIGHT: #b2e8ed 1px solid; PADDING-TOP: 10px"&gt;Bridge : 다리&lt;br /&gt;현실세계의 다리가 강 양 쪽의 장소를 연결하는 역할을 하듯이 Bridge Pattern는 기능 클래스와 구현 클래스의 다리를 놓는다.&lt;br /&gt;▪ 기능의 클래스 계층&lt;br /&gt;▪ 구현의 클래스 계층&lt;/DIV&gt;&lt;P&gt;&lt;br /&gt;&lt;STRONG&gt;클래스 계층의 두 가지 역할&lt;/STRONG&gt;&lt;/P&gt;&lt;DIV style="BORDER-BOTTOM: #b2e8ed 1px solid; BORDER-LEFT: #b2e8ed 1px solid; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #e1fdff; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #b2e8ed 1px solid; BORDER-RIGHT: #b2e8ed 1px solid; PADDING-TOP: 10px"&gt;&lt;STRONG&gt;새로운 기능을 추가하고 싶은 경우&lt;br /&gt;&lt;/STRONG&gt;- Something 클래스에 새로운 기능을 추가하려고 할때&lt;br /&gt;&amp;nbsp;&amp;nbsp; ▪ Something 클래스의 하위 클래스를 새롭게 만든다.&lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XKfrRsTNoO.jpg" style="width:169px;height:57px;" alt="" onclick="TC$PRIV_open_img('http://ss.textcube.com/blog/1/10879/attach/XKfrRsTNoO.jpg')" /&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; ▪ 소규모의 클래스 계층이 발생함 =&amp;gt; ' &lt;STRONG&gt;&lt;U&gt;기능의 클래스 계층&lt;/U&gt;&lt;/STRONG&gt;'&lt;br /&gt;- SomethingGood 클래스에 다시 새로운 기능을 추가하려면...&lt;br /&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XfQEUFiq0N.jpg" style="width:282px;height:96px;" alt="" onclick="TC$PRIV_open_img('http://ss.textcube.com/blog/1/10879/attach/XfQEUFiq0N.jpg')" /&gt;&lt;/div&gt;&lt;br /&gt;- 새로운 기능을 추가하고 싶을 때 클래스 계층 안에서 새로 만들려고 하는 클래스와 유사한 &lt;br /&gt;&amp;nbsp; 클래스를 찾아내, 하위 클래스를 만들어 기능을 추가한다.&lt;br /&gt;&lt;br /&gt;&lt;STRONG&gt;새로운 구현을 추가하고 싶은 경우&lt;br /&gt;&lt;/STRONG&gt;- 추상 클래스는, 일련의 메소드를을 추상 메소드로 선언하고, 인터페이스를 규정&lt;br /&gt;- 하위 클래스 쪽에서 그 추상 메소드를 실제로 구현&lt;br /&gt;- 상위 클래스는 추상메소드로, 인터페이스를 규정하는 역할을 한다&lt;br /&gt;- 상위 클래스와 하위 클래스의 역할 분담에 의해 부품으로서의 가치(교환 가능성)가 높은 &lt;br /&gt;&amp;nbsp;&amp;nbsp; 클래스를 만들수 있다.&lt;br /&gt;- 이 때에도 클래스 계층이 등장한다.&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XZx4uvFQk1.jpg" style="width:247px;height:84px;" alt="" onclick="TC$PRIV_open_img('http://ss.textcube.com/blog/1/10879/attach/XZx4uvFQk1.jpg')" /&gt;&lt;/div&gt;&lt;br /&gt;- 이를 &lt;STRONG&gt;&lt;U&gt;구현의 클래스 계층&lt;/U&gt;&lt;/STRONG&gt;이라고 한다.&lt;br /&gt;- AbstractClass의 다른 구현을 만들고 싶으면, 다른 하위 클래스를 만들면 된다.&lt;br /&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XLPlSFRWek.jpg" style="width:423px;height:76px;" alt="" onclick="TC$PRIV_open_img('http://ss.textcube.com/blog/1/10879/attach/XLPlSFRWek.jpg')" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;STRONG&gt;클래스 계층의 혼재와 클래스 계층의 분리&lt;br /&gt;&lt;/STRONG&gt;- 클래스 계층 구조 하나에, 기능의 클래스 계층과 구현의 클래스 계층이 혼재해 있으면, 새로운 하위 클래스를 만들 때 어려움이 있다.&lt;br /&gt;- 기능의 클래스 계층과 구현의 클래스 계층을 분리하고, 이들사이에 다리를 놓자.&lt;br /&gt;&lt;STRONG&gt;&lt;FONT color=#38cc1a&gt;☞ Bridge Pattern&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;예제 프로그램&lt;/STRONG&gt;&lt;/P&gt;&lt;DIV style="BORDER-BOTTOM: #b2e8ed 1px solid; BORDER-LEFT: #b2e8ed 1px solid; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #e1fdff; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #b2e8ed 1px solid; BORDER-RIGHT: #b2e8ed 1px solid; PADDING-TOP: 10px"&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XGEURXXzS0.jpg" style="width:540px;height:192px;" alt="" onclick="TC$PRIV_open_img('http://ss.textcube.com/blog/1/10879/attach/XGEURXXzS0.jpg')" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XEhDh8BFWM.jpg" style="width:541px;height:404px;" alt="" onclick="TC$PRIV_open_img('http://ss.textcube.com/blog/1/10879/attach/XEhDh8BFWM.jpg')" /&gt;&lt;/div&gt;&lt;br /&gt;JAVA 소스는 앞서 올린 자료에 있습니다.&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Bridge 패턴의 등장인물&lt;/STRONG&gt;&lt;/P&gt;&lt;DIV style="BORDER-BOTTOM: #b2e8ed 1px solid; BORDER-LEFT: #b2e8ed 1px solid; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #e1fdff; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #b2e8ed 1px solid; BORDER-RIGHT: #b2e8ed 1px solid; PADDING-TOP: 10px"&gt;&lt;STRONG&gt;Abstaction(추상화)의 역할&lt;br /&gt;&lt;/STRONG&gt;- 기능의 클래스 계층의 최상위 클래스&lt;br /&gt;- Implementor 역할의 메소드를 사용해서 기본적인 기능만이 기술되어 있는 클래스&lt;br /&gt;- 이 인스턴스는 Implementor 역할&lt;br /&gt;&lt;br /&gt;&lt;STRONG&gt;RefinedAbstaction(개선된 추상화) 역할&lt;br /&gt;&lt;/STRONG&gt;- Abstaction 역할에 대해 기능을 추가한 역할&lt;br /&gt;&lt;br /&gt;&lt;STRONG&gt;Implementor(구현자) 역할&lt;br /&gt;&lt;/STRONG&gt;- 구현클래스 계층의 최상위 클래스&lt;br /&gt;- Abstaction 역할의 인터페이스를 구현하기 위한 메소드를 규정하는 역할&lt;br /&gt;&lt;br /&gt;&lt;STRONG&gt;Concrete Implementor(구체적인 구현자) 역할&lt;br /&gt;&lt;/STRONG&gt;- Implementor 역할의 인터페이스를 구체적으로 구현하는 역할&lt;br /&gt;&lt;br /&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XTxMXuxqGn.png" style="width:491px;height:341px;" alt="" onclick="TC$PRIV_open_img('http://ss.textcube.com/blog/1/10879/attach/XTxMXuxqGn.png')" /&gt;&lt;/div&gt;☞ 왼쪽의 두 개가 기능의 클래스 계층, 오른쪽의 두 개가 구현의 클래스 계층입니다.&lt;br /&gt;&amp;nbsp; &amp;nbsp; 두 계층을 impl 필드가 중개하고 있습니다.&lt;/DIV&gt;&lt;P&gt;&lt;br /&gt;&lt;br /&gt;출처 : JAVA 언어로 배우는 디자인 패턴 입문(영진닷컴)&lt;/P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2357933784790449713-858858061346160498?l=akangels-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akangels-textcube.blogspot.com/feeds/858858061346160498/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://akangels-textcube.blogspot.com/2009/10/bridge-pattern-1.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/858858061346160498'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/858858061346160498'/><link rel='alternate' type='text/html' href='http://akangels-textcube.blogspot.com/2009/10/bridge-pattern-1.html' title='Bridge Pattern #1'/><author><name>아크엔젤스</name><uri>http://www.blogger.com/profile/10209348568937169243</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2357933784790449713.post-3741487380023522283</id><published>2009-10-13T13:32:00.000+09:00</published><updated>2011-01-29T19:57:26.126+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JAVA에서 Iterator'/><category scheme='http://www.blogger.com/atom/ns#' term='Free'/><category scheme='http://www.blogger.com/atom/ns#' term='C#에서 foreach'/><title type='text'>JAVA에서 Iterator메소드가 C#에는..</title><content type='html'>&lt;script src='http://ss.textcube.com/service/blog/script/blogger.js' type='text/javascript'&gt;&lt;/script&gt;&lt;P&gt;디자인 패턴 및 C# 공부중에..&lt;/P&gt;&lt;P&gt;Abstract Factory 패턴의 JAVA로 된 소스를 C#으로 고치고 있었다.&lt;/P&gt;&lt;P&gt;그러던중 다음과 같은 부분에서 애먹었던 일이 있었다.&lt;/P&gt;&lt;P&gt;무었이냐하면&lt;/P&gt;&lt;P&gt;JAVA&lt;/P&gt;&lt;p id="more-90-0" class="moreless_fold" style="color: #000000; padding: 0 0 0 10px;"&gt;&lt;span style="cursor: pointer;" onclick="if (window.TC$PRIV_toggleMoreLessBlogger != undefined) {TC$PRIV_toggleMoreLessBlogger(this, '90-0','펼쳐두기..','접어두기..'); return false;} else {document.getElementById('content-90-0').style.display='';}"&gt;      펼쳐두기..&lt;/span&gt;&lt;/p&gt;  &lt;div id="content-90-0" class="moreless_content" style="display: none; border: 1px dashed #cccccc; background-color: #f3f3f3; margin: 0 10px padding: 5px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Iterator it = content.iterator();&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; while (it.hasNext())&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Item item = (Item)it.next();&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; buffer.Append(item.makeHTML());&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;&lt;/DIV&gt;&lt;P&gt;: 위의 Iterator은 JAVA의 클래스 라이브러리로 제공되고 있는 것이다.&amp;nbsp; java.util.ArrayList클래스에서 java.util.Iterator 클래스를 만들기 위해서 iterator라는 메소드가 사용된다. 위 부분을 c#으로 바꾸어야했다.&lt;/P&gt;&lt;P&gt;아무리 찾아보아도 내가 원하는 방향의 메소드는 없었다. 즉..C#에는 Iterator이라는것은 없었다. 물론&lt;/P&gt;&lt;P&gt;비슷하지만 다른것은 많았다. yeild를 이용해서 하는방법 등등 말이다.. 하지만 이렇게 할경우 자칫.. 한부분만 바꾸면되는것을 통째로 바꾸어야 할지도 몰랐다..&lt;/P&gt;&lt;P&gt;아 그러던중.. 위의 소스를 유심히 보았다.&lt;/P&gt;&lt;P&gt;it.hasNext() 요놈이 하는일은 content 이것이 가지고있는 범위내에서 while문을 돌아라는것이다.&lt;/P&gt;&lt;P&gt;이말은 즉, C#에서 foreach문을 생각나게 하였다.&lt;/P&gt;&lt;P&gt;foreach문은 알아서 범위내에서 반복문을 돌아주기때문이다. 또한 아래의&lt;/P&gt;&lt;P&gt;next()문도 foreach문으로 해결되는 부분이였다.. 아 -0- 이렇게 쉬운것을...&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;C#&lt;/P&gt;&lt;p id="more-90-1" class="moreless_fold" style="color: #000000; padding: 0 0 0 10px;"&gt;&lt;span style="cursor: pointer;" onclick="if (window.TC$PRIV_toggleMoreLessBlogger != undefined) {TC$PRIV_toggleMoreLessBlogger(this, '90-1','펼쳐두기..','접어두기..'); return false;} else {document.getElementById('content-90-1').style.display='';}"&gt;      펼쳐두기..&lt;/span&gt;&lt;/p&gt;  &lt;div id="content-90-1" class="moreless_content" style="display: none; border: 1px dashed #cccccc; background-color: #f3f3f3; margin: 0 10px padding: 5px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; foreach (Item index in content)&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Item item = (Item)index;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; buffer.Append(item.makeHTML());&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;이렇게 간단하게 바뀌는 문제였던 것이다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;이번일을 겪으면서 많은 생각이 들었다.&lt;/P&gt;&lt;P&gt;어디까지나 나의 생각이다..&lt;/P&gt;&lt;P&gt;이전에는 JAVA나 C#이나 거기서 거기지... 이런생각이였다. 하지만 많이 다르다는 것을 느꼈다.&lt;/P&gt;&lt;P&gt;머랄가.. 자바는.. 여러사람이 만든것 같다는 느낌이랄까.. 하지만 C#의 경우 하나의 사람이 만든들었다는 느낌이 든다. 물론 여기서 사람은 하나의 단체나 기관을 말하는거다.&lt;/P&gt;&lt;P&gt;즉 C#은 MS사에서 만든것이지만 JAVA는 여러사람이 만들어 놓은것을 붙여놓은 듯한 느낌이랄까...&lt;/P&gt;&lt;P&gt;어디까지나.. 나의 생각이다....&lt;br /&gt;&lt;/P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2357933784790449713-3741487380023522283?l=akangels-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akangels-textcube.blogspot.com/feeds/3741487380023522283/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://akangels-textcube.blogspot.com/2009/10/java%EC%97%90%EC%84%9C-iterator%EB%A9%94%EC%86%8C%EB%93%9C%EA%B0%80-c%EC%97%90%EB%8A%94.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/3741487380023522283'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/3741487380023522283'/><link rel='alternate' type='text/html' href='http://akangels-textcube.blogspot.com/2009/10/java%EC%97%90%EC%84%9C-iterator%EB%A9%94%EC%86%8C%EB%93%9C%EA%B0%80-c%EC%97%90%EB%8A%94.html' title='JAVA에서 Iterator메소드가 C#에는..'/><author><name>아크엔젤스</name><uri>http://www.blogger.com/profile/10209348568937169243</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2357933784790449713.post-5356130842673286480</id><published>2009-10-10T17:39:00.000+09:00</published><updated>2011-01-29T19:57:25.823+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='비주얼 스튜디오 2008 삭제'/><category scheme='http://www.blogger.com/atom/ns#' term='Visual stdio 2008 제거 오류'/><category scheme='http://www.blogger.com/atom/ns#' term='2008 삭제오류'/><category scheme='http://www.blogger.com/atom/ns#' term='설치 구성 요소를 로드하는 동안 문제가 발행했습니다.'/><category scheme='http://www.blogger.com/atom/ns#' term='Free'/><title type='text'>Visual Studio 2008 제거 오류</title><content type='html'>&lt;script src='http://ss.textcube.com/service/blog/script/blogger.js' type='text/javascript'&gt;&lt;/script&gt;&lt;P&gt;Visual Studio 2008 제거 오류 &lt;/P&gt;&lt;P&gt;- "설치 구성 요소를 로드하는 동안 문제가 발생했습니다. 설치를 취소합니다."&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;노트북을 산이후 집에 있는 데탑은 거의 하지 않기에.. VS2008을 지울려고 하였다.&lt;/P&gt;&lt;P&gt;하지만 이넘의 VS 안지워진다.. 위와 같은 오류 메시지가 뜨면서 말이다..&lt;/P&gt;&lt;P&gt;그래서 네이버 지식인과 블로그 등 많이 찾아보았다.&lt;/P&gt;&lt;P&gt;아래의 방법 1, 2, 3을 해보았지만 해결하지 못하였다. 상황과 원인에 따라 다양한 방법이 있는 듯하다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;일단 3번째 방법으로 하면 거의 확실히 되는듯하다. 하지만 레지스트리를 건드는 방법이니.. &lt;/P&gt;&lt;P&gt;1,2번의 방법으로 해결된다면 그것으로 하는것이 좋을듯하다. 물론 안된다면 최후의 방법인&lt;/P&gt;&lt;P&gt;3번의 방법으로 하면된다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;일단.. 방법 1, 2, 3에 대해 보겠다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;- 방법 1&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Visual studio 2008 ReadMe에 있는 내용&lt;/STRONG&gt;&lt;/P&gt;&lt;p id="more-89-0" class="moreless_fold" style="color: #000000; padding: 0 0 0 10px;"&gt;&lt;span style="cursor: pointer;" onclick="if (window.TC$PRIV_toggleMoreLessBlogger != undefined) {TC$PRIV_toggleMoreLessBlogger(this, '89-0','펼쳐두기..','접어두기..'); return false;} else {document.getElementById('content-89-0').style.display='';}"&gt;      펼쳐두기..&lt;/span&gt;&lt;/p&gt;  &lt;div id="content-89-0" class="moreless_content" style="display: none; border: 1px dashed #cccccc; background-color: #f3f3f3; margin: 0 10px padding: 5px;"&gt;&lt;H4&gt;2.1.3. "설치 구성 요소를 로드하는 동안 문제가 발생했습니다. 설치를 취소합니다."라는 오류 메시지가 나타납니다.&lt;SUP class=tocAnchorContainer&gt;&lt;A id=toc_6 class=con_link title=toc_6 href="http://zyint.tistory.com/381#toc_6" target=_blank&gt;#&lt;/A&gt;&lt;/SUP&gt;&lt;/H4&gt;&lt;P&gt;"설치 구성 요소를 로드하는 동안 문제가 발생했습니다. 설치를 취소합니다."라는 오류 메시지가 나타난 다음 설치가 취소됩니다. 이 문제는 시스템에 Windows Installer 3.1이 설치되어 있지 않은 경우에만 발생합니다. Windows Installer 3.1을 설치한 다음 설치를 다시 시도해야 합니다.&lt;/P&gt;&lt;P&gt;&lt;EM class=underline&gt;이 문제를 해결하려면&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;1. 프로그램 추가/제거에서 설치된 프로그램 목록에 Windows Installer 3.1이 있는지 확인합니다.&lt;/P&gt;&lt;P&gt;2. Windows Installer 3.1이 없으면 다음 단계를 수행하십시오.&lt;/P&gt;&lt;P&gt;&amp;nbsp; a. &lt;A class=con_link href="http://go.microsoft.com/fwlink/?LinkId=95263" target=_blank&gt;&lt;STRONG&gt;Windows Installer 3.1 Redistributable (v2)&lt;/STRONG&gt;&lt;/A&gt;로 이동한 다음 Windows Installer 3.1을 설치합니다.&lt;/P&gt;&lt;P&gt;&amp;nbsp; b. Visual Studio 2008 설치를 다시 시도합니다.&lt;br /&gt;&lt;/P&gt;&lt;/DIV&gt;&lt;P&gt;&lt;br /&gt;혹시. 버전이 이미 설치되어 있는 버전이 더 높아서 설치가 안된다고 한다면 아래에.. 더 높은 버전이 &lt;/P&gt;&lt;P&gt;있을것이다 그것을 받으면 된다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;- 방법 2&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;원문 : &lt;/STRONG&gt;&lt;A class=con_link href="http://dscape.tistory.com/27" target=_blank&gt;&lt;STRONG&gt;http://dscape.tistory.com/27&lt;/STRONG&gt;&lt;/A&gt;&lt;/P&gt;&lt;DIV class=titleinfo&gt;&lt;p id="more-89-1" class="moreless_fold" style="color: #000000; padding: 0 0 0 10px;"&gt;&lt;span style="cursor: pointer;" onclick="if (window.TC$PRIV_toggleMoreLessBlogger != undefined) {TC$PRIV_toggleMoreLessBlogger(this, '89-1','펼쳐두기..','접어두기..'); return false;} else {document.getElementById('content-89-1').style.display='';}"&gt;      펼쳐두기..&lt;/span&gt;&lt;/p&gt;  &lt;div id="content-89-1" class="moreless_content" style="display: none; border: 1px dashed #cccccc; background-color: #f3f3f3; margin: 0 10px padding: 5px;"&gt;&lt;DIV class=titleinfo&gt;&lt;SPAN class=title&gt;&lt;A class=con_link href="http://dscape.tistory.com/27" target=_blank&gt;&lt;FONT color=#336699 size=2&gt;Visual Studio 2008에서 '설치 구성 요소를 로드...' 에러 메시지가 나올 때의 해결 방법&lt;/FONT&gt;&lt;/A&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;DIV class=date align=left&gt;2009/04/16 12:08&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=article&gt;Visual Studio 2008을 업그레이드하거나 제거하려 할 때,&lt;br /&gt;&lt;br /&gt;"설치 구성 요소를 로드하는 동안 문제가 발생했습니다. 설치를 취소합니다."&lt;br /&gt;&lt;br /&gt;위와 같은 메시지가 출력되면서 다음 작업을 진행할 수 없는 경우가 발생할 때가 있다.&lt;br /&gt;&lt;br /&gt;이 현상은 Windows Installer가 원인이 되어 발생하는 경우가 대부분이지만, 다른 원인이 존재할 때도 있다.&lt;br /&gt;&lt;br /&gt;이 때는 시스템에 Visual Studio 2008용 Hotfix KB952241이 설치되어 있는지 확인해보고,&lt;br /&gt;설치되어 있을 경우 해당 Hotfix를 설치제거한 다음 원하는 작업을 계속 진행함으로써 문제 해결을 기대해볼 수 있다.&lt;br /&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;- 방법 3&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;원문 : &lt;/STRONG&gt;&lt;A class=con_link href="http://lionroast.tistory.com/54" target=_blank&gt;&lt;STRONG&gt;http://lionroast.tistory.com/54&lt;/STRONG&gt;&lt;/A&gt;&lt;/P&gt;&lt;p id="more-89-2" class="moreless_fold" style="color: #000000; padding: 0 0 0 10px;"&gt;&lt;span style="cursor: pointer;" onclick="if (window.TC$PRIV_toggleMoreLessBlogger != undefined) {TC$PRIV_toggleMoreLessBlogger(this, '89-2','펼쳐두기..','접어두기..'); return false;} else {document.getElementById('content-89-2').style.display='';}"&gt;      펼쳐두기..&lt;/span&gt;&lt;/p&gt;  &lt;div id="content-89-2" class="moreless_content" style="display: none; border: 1px dashed #cccccc; background-color: #f3f3f3; margin: 0 10px padding: 5px;"&gt;&lt;P&gt;한글판일 경우 다음의 레지스트리 키 삭제&lt;/P&gt;&lt;P&gt;&lt;FONT color=#2b8400&gt;HKEY_LOCAL_MACHINE&lt;/FONT&gt;\&lt;FONT color=#2b8400&gt;SOFTWARE&lt;/FONT&gt;\&lt;FONT color=#2b8400&gt;Classes&lt;/FONT&gt;\&lt;FONT color=#2b8400&gt;Installer&lt;/FONT&gt;\&lt;FONT color=#2b8400&gt;products&lt;/FONT&gt;\&lt;br /&gt;&lt;FONT color=#e31600&gt;2F5B0C81B134C6130A6B87589A22B84A&lt;/FONT&gt;\&lt;FONT color=#2b8400&gt;Patches&lt;/FONT&gt;\&lt;FONT color=#e31600&gt;Patches&lt;/FONT&gt; 삭제&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;영문판일 경우 다음의 레지스트리 키 삭제&lt;/P&gt;&lt;P&gt;&lt;FONT color=#2b8400&gt;HKEY_LOCAL_MACHINE&lt;/FONT&gt;\&lt;FONT color=#2b8400&gt;SOFTWARE&lt;/FONT&gt;\&lt;FONT color=#2b8400&gt;Classes&lt;/FONT&gt;\&lt;FONT color=#2b8400&gt;Installer&lt;/FONT&gt;\&lt;FONT color=#2b8400&gt;products&lt;/FONT&gt;\&lt;br /&gt;&lt;FONT color=#e31600&gt;DCC60C0870D76BD368DC5BB7F360418D&lt;/FONT&gt;\&lt;FONT color=#2b8400&gt;Patches&lt;/FONT&gt;\&lt;FONT color=#e31600&gt;Patches&lt;/FONT&gt; 삭제 &lt;/P&gt;&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;만약 위의 레지스트리 키 값을 찾을 수 없는 경우도 있다.&lt;/P&gt;&lt;P&gt;&lt;FONT color=#000000&gt;하지만 일단 아래의 사항까지는 있을것이다.&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color=#2b8400&gt;HKEY_LOCAL_MACHINE&lt;/FONT&gt;\&lt;FONT color=#2b8400&gt;SOFTWARE&lt;/FONT&gt;\&lt;FONT color=#2b8400&gt;Classes&lt;/FONT&gt;\&lt;FONT color=#2b8400&gt;Installer&lt;/FONT&gt;\&lt;FONT color=#2b8400&gt;products&lt;/FONT&gt;\&lt;/P&gt;&lt;P&gt;그다음 구문이 문제인데.. 방법은.. 좀.. 눈이 아프고 손이 고단할수 있지만 아주 조금 말이다..&lt;/P&gt;&lt;P&gt;일일이 찾아보는것이다.&lt;/P&gt;&lt;P&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XHDabbVz6x.jpg" style="width:536px;height:428px;" alt="" onclick="TC$PRIV_open_img('http://ss.textcube.com/blog/1/10879/attach/XHDabbVz6x.jpg')" /&gt;&lt;/div&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;위의 사진을 보면 ProductName 사항이 있을것이다. 바로 요놈이다.. 요놈하위루트의 \&lt;FONT color=#2b8400&gt;Patches&lt;/FONT&gt;\&lt;FONT color=#e31600&gt;Patches&lt;/FONT&gt; 삭제 해주면 된다..&lt;br /&gt;&lt;/P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2357933784790449713-5356130842673286480?l=akangels-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akangels-textcube.blogspot.com/feeds/5356130842673286480/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://akangels-textcube.blogspot.com/2009/10/visual-studio-2008-%EC%A0%9C%EA%B1%B0-%EC%98%A4%EB%A5%98.html#comment-form' title='4개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/5356130842673286480'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/5356130842673286480'/><link rel='alternate' type='text/html' href='http://akangels-textcube.blogspot.com/2009/10/visual-studio-2008-%EC%A0%9C%EA%B1%B0-%EC%98%A4%EB%A5%98.html' title='Visual Studio 2008 제거 오류'/><author><name>아크엔젤스</name><uri>http://www.blogger.com/profile/10209348568937169243</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2357933784790449713.post-2511705242503042882</id><published>2009-10-09T16:35:00.000+09:00</published><updated>2011-01-29T19:57:25.728+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='base'/><title type='text'>상속 관계에서의 생성자, base키워드</title><content type='html'>&lt;script src='http://ss.textcube.com/service/blog/script/blogger.js' type='text/javascript'&gt;&lt;/script&gt;&lt;P&gt;간단하게 상속 관계의 예제를 보도록 하겠습니다.&lt;/P&gt;&lt;p id="more-88-0" class="moreless_fold" style="color: #000000; padding: 0 0 0 10px;"&gt;&lt;span style="cursor: pointer;" onclick="if (window.TC$PRIV_toggleMoreLessBlogger != undefined) {TC$PRIV_toggleMoreLessBlogger(this, '88-0','펼쳐두기..','접어두기..'); return false;} else {document.getElementById('content-88-0').style.display='';}"&gt;      펼쳐두기..&lt;/span&gt;&lt;/p&gt;  &lt;div id="content-88-0" class="moreless_content" style="display: none; border: 1px dashed #cccccc; background-color: #f3f3f3; margin: 0 10px padding: 5px;"&gt;&lt;P&gt;&lt;FONT color=#0000ff&gt;namespace &lt;/FONT&gt;Console&lt;br /&gt;{&lt;br /&gt;&amp;nbsp; &amp;nbsp;&lt;FONT color=#0000ff&gt;using &lt;/FONT&gt;System;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;public class &lt;/FONT&gt;Programmer&lt;br /&gt;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;FONT color=#0000ff&gt;public string &lt;/FONT&gt;str;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;FONT color=#0000ff&gt;public &lt;/FONT&gt;Programmer(&lt;FONT color=#0000ff&gt;string &lt;/FONT&gt;str)&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;this&lt;/FONT&gt;.str = str;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;public class &lt;/FONT&gt;Beginner : Programmer&lt;br /&gt;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;FONT color=#0000ff&gt;public string &lt;/FONT&gt;be_str;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;FONT color=#0000ff&gt;public void &lt;/FONT&gt;Method()&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; Console.WriteLine("비기너 클래스");&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp; &amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;public class &lt;/FONT&gt;Class1&lt;br /&gt;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;FONT color=#0000ff&gt;public static void &lt;/FONT&gt;Main()&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; Beginner be = &lt;FONT color=#0000ff&gt;new &lt;/FONT&gt;Beginner();&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;/P&gt;&lt;br /&gt;&lt;/DIV&gt;&lt;P&gt;&lt;br /&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;위의 예제는 간단한 상속 관계를 표현한 예제입니다. 뭔가 이상한 점을 발견 하셨나요?&lt;/P&gt;&lt;P&gt;발견하셨다면... 열심히 공부하신 분이거나... 실력이 뛰어나신 분입니다. ^^;&lt;/P&gt;&lt;P&gt;언뜻 보기에는 아무런 문제가 없어 보입니다. &lt;/P&gt;&lt;P&gt;그러나 아주 중요한 부분이 틀렸습니다. 바로 상속 관계에서의 생성자 구현 부분입니다.&lt;/P&gt;&lt;P&gt;Beginner클래스의 개체를 하나 생성했죠? 그런데 컴파일러는 &lt;/P&gt;&lt;P&gt;&lt;FONT style="BACKGROUND-COLOR: #009966" color=#ffffff&gt;'Programmer' 메서드에 대한 오버로드는 '0'개의 인수를 사용하지 않습니다.&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color=#333333&gt;라고 에러 메세지를 보여 줍니다. 이상 합니다. 그쵸? 개체는 Beginerr개체를 생성한 것이고&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color=#333333&gt;생성자를 명시 하지 않으면 기본적으로 기본 생성자가 만들어집니다. &lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color=#333333&gt;여기까지는 강좌를 통해서 배웠습니다.&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color=#333333&gt;하지만 자식 클래스가 부모 클래스를 상속 받으면 기본적으로 부모 클래스의 생성자를 호출합니다.&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color=#333333&gt;그래서 자식 클래스에서는 아래와 같은 코드가 빠졌던 것 입니다.&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;FONT color=#333333&gt;&lt;STRONG&gt;&lt;FONT color=#0000ff&gt;public &lt;/FONT&gt;Beginerr () : &lt;FONT color=#0000ff&gt;base&lt;/FONT&gt;() {}&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&lt;/STRONG&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;FONT color=#333333&gt;여기서 base키워드는 부모 클래스를 뜻합니다. 저러한 형태의 생성자는 생성자 강좌에서 &lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color=#333333&gt;보았습니다. 그렇죠? 저 구문이 빠졌지만 기본적으로 기본 생성자가 만들어진다고 가정하에&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color=#333333&gt;코드를 역추적 해보겠습니다. Beginner개체를 생성합니다. 그럼 Beginner생성자가 호출이 될테고&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color=#333333&gt;Beginner클래스의 생성자를 보면 부모 클래스의 생성자를 호출합니다.&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color=#333333&gt;그리고 부모 클래스를 보면... 생성자를 오버로딩 했습니다. 그러면 !! 기본 생성자는 자동으로&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color=#333333&gt;만들어지지 않죠? 그래서 에러가 발생하였던 것 입니다. 이해가 되시나요?&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color=#333333&gt;만약에 base부분을 뺐다 하더라도 자식 클래스는 부모 클래스의 생성자를 호출하는 의무를 지닙&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color=#333333&gt;니다. 그러면 어떻게 해야 할까요? 부모 클래스의 생성자에 맞게 코드를 변경해야 합니다.&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;FONT color=#333333&gt;&lt;p id="more-88-1" class="moreless_fold" style="color: #000000; padding: 0 0 0 10px;"&gt;&lt;span style="cursor: pointer;" onclick="if (window.TC$PRIV_toggleMoreLessBlogger != undefined) {TC$PRIV_toggleMoreLessBlogger(this, '88-1','펼쳐두기..','접어두기..'); return false;} else {document.getElementById('content-88-1').style.display='';}"&gt;      펼쳐두기..&lt;/span&gt;&lt;/p&gt;  &lt;div id="content-88-1" class="moreless_content" style="display: none; border: 1px dashed #cccccc; background-color: #f3f3f3; margin: 0 10px padding: 5px;"&gt;&amp;nbsp;&lt;P&gt;&lt;FONT color=#0000ff&gt;namespace &lt;/FONT&gt;Console&lt;br /&gt;{&lt;br /&gt;&amp;nbsp; &amp;nbsp;&lt;FONT color=#0000ff&gt;using &lt;/FONT&gt;System;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;public class &lt;/FONT&gt;Programmer&lt;br /&gt;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;FONT color=#0000ff&gt;public string &lt;/FONT&gt;str;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;FONT color=#0000ff&gt;public &lt;/FONT&gt;Programmer(&lt;FONT color=#0000ff&gt;string &lt;/FONT&gt;str)&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;this&lt;/FONT&gt;.str = str;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;public class &lt;/FONT&gt;Beginner : Programmer&lt;br /&gt;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;FONT color=#0000ff&gt;public string &lt;/FONT&gt;be_str;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;FONT color=#0000ff&gt;public &lt;/FONT&gt;Beginner(&lt;FONT color=#0000ff&gt;string &lt;/FONT&gt;s) : &lt;FONT color=#0000ff&gt;base&lt;/FONT&gt;(s) {}&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;FONT color=#0000ff&gt;public void &lt;/FONT&gt;Method()&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; Console.WriteLine("비기너 클래스");&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp; &amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;public class &lt;/FONT&gt;Class1&lt;br /&gt;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;FONT color=#0000ff&gt;public static void &lt;/FONT&gt;Main()&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; Beginner be = &lt;FONT color=#0000ff&gt;new &lt;/FONT&gt;Beginner("마리");&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;/P&gt;&lt;br /&gt;&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;이렇게요. Beginerr 생성자에서 보시면 string형 s를 인자로 받구요. 그 인자를 base 즉, 부모 클래&lt;/P&gt;&lt;P&gt;스의 생성자를 호출하며 넣어줍니다. 그러면 부모 클래스 Programmer클래스에서는 마리 라는 &lt;/P&gt;&lt;P&gt;문자열을 인자로 받아서 자신 개체에 값을 할당하겠죠?&lt;/P&gt;&lt;P&gt;정리를 해보면, 자식 클래스는 부모 클래스의 생성자를 호출하는 의무가 있다.&lt;/P&gt;&lt;P&gt;해서 자식 클래스에서 생성자를 선언하지 않고 기본 생성자로 사용할 경우 &lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;FONT color=#333333&gt;&lt;STRONG&gt;&lt;FONT color=#0000ff&gt;public &lt;/FONT&gt;Beginerr () : &lt;FONT color=#0000ff&gt;base&lt;/FONT&gt;() {}&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;이런 코드가 빠져있다는 것을 주의 깊게 생각해야 한다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;출처 : &lt;A href="http://cafe.naver.com/headstudy.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=664"&gt;http://cafe.naver.com/headstudy.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=664&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;// 나는.. base가 빠졌다는 것을 알았지만... 하하하;;(돌멩이 피할 준비중..)&lt;/P&gt;&lt;P&gt;// 물론 최근에.. 공부하던중에 저런 에러를 보았기에 가능했던 사실..&lt;/P&gt;&lt;/FONT&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2357933784790449713-2511705242503042882?l=akangels-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akangels-textcube.blogspot.com/feeds/2511705242503042882/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://akangels-textcube.blogspot.com/2009/10/%EC%83%81%EC%86%8D-%EA%B4%80%EA%B3%84%EC%97%90%EC%84%9C%EC%9D%98-%EC%83%9D%EC%84%B1%EC%9E%90-base%ED%82%A4%EC%9B%8C%EB%93%9C.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/2511705242503042882'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/2511705242503042882'/><link rel='alternate' type='text/html' href='http://akangels-textcube.blogspot.com/2009/10/%EC%83%81%EC%86%8D-%EA%B4%80%EA%B3%84%EC%97%90%EC%84%9C%EC%9D%98-%EC%83%9D%EC%84%B1%EC%9E%90-base%ED%82%A4%EC%9B%8C%EB%93%9C.html' title='상속 관계에서의 생성자, base키워드'/><author><name>아크엔젤스</name><uri>http://www.blogger.com/profile/10209348568937169243</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2357933784790449713.post-4184259487515194967</id><published>2009-10-09T16:05:00.000+09:00</published><updated>2011-01-29T19:57:25.633+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Reflection'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><title type='text'>Reflection</title><content type='html'>&lt;script src='http://ss.textcube.com/service/blog/script/blogger.js' type='text/javascript'&gt;&lt;/script&gt;&lt;SPAN style="FONT-FAMILY: Gulim" lang=KO&gt;&lt;DIV class=POST_TTL&gt;&lt;A title="Reflection API를 사용해서, Assembly로부터 클래스를 로드하기(C#)" name=2133754&gt;&lt;STRONG&gt;Reflection API를 사용해서, Assembly로부터 클래스를 로드하기(C#)&lt;/STRONG&gt;&lt;/A&gt;&lt;/DIV&gt;&lt;/SPAN&gt;&lt;P style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1"&gt;&lt;SPAN style="FONT-FAMILY: Gulim" lang=KO&gt;클래스를&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Verdana" lang=EN-US&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Gulim" lang=KO&gt;참조하지&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Verdana" lang=EN-US&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Gulim" lang=KO&gt;않은&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Verdana" lang=EN-US&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Gulim" lang=KO&gt;상태에서&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Verdana" lang=EN-US&gt;, DLL&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Gulim" lang=KO&gt;로부터&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Verdana" lang=EN-US&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Gulim" lang=KO&gt;동적으로&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Verdana" lang=EN-US&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Gulim" lang=KO&gt;클래스를&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Verdana" lang=EN-US&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Gulim" lang=KO&gt;로드해서&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Verdana" lang=EN-US&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Gulim" lang=KO&gt;써야&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Verdana" lang=EN-US&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Gulim" lang=KO&gt;할&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Verdana" lang=EN-US&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Gulim" lang=KO&gt;경우가&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Verdana" lang=EN-US&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Gulim" lang=KO&gt;있다&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Verdana" lang=EN-US&gt;. &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Gulim" lang=KO&gt;그럴&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Verdana" lang=EN-US&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Gulim" lang=KO&gt;때는&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Verdana" lang=EN-US&gt; .NET&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Gulim" lang=KO&gt;에서&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Verdana" lang=EN-US&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Gulim" lang=KO&gt;제공하는&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Verdana" lang=EN-US&gt; Reflection API&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Gulim" lang=KO&gt;를&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Verdana" lang=EN-US&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Gulim" lang=KO&gt;사용해서&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Verdana" lang=EN-US&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Gulim" lang=KO&gt;클래스를&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Verdana" lang=EN-US&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Gulim" lang=KO&gt;로드하고&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Verdana" lang=EN-US&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Gulim" lang=KO&gt;인스턴스화할&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Verdana" lang=EN-US&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Gulim" lang=KO&gt;수&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Verdana" lang=EN-US&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Gulim" lang=KO&gt;있다&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Verdana" lang=EN-US&gt;. &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Gulim" lang=KO&gt;다음&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Verdana" lang=EN-US&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Gulim" lang=KO&gt;코드와&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Verdana" lang=EN-US&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Gulim" lang=KO&gt;같이&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Verdana" lang=EN-US&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Gulim" lang=KO&gt;사용하면&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Verdana" lang=EN-US&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Gulim" lang=KO&gt;된다&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Verdana" lang=EN-US&gt;.&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="MARGIN: 0in; FONT-FAMILY: Gulim; FONT-SIZE: 10pt; mso-outline-level: 1"&gt;System.Reflection.&lt;SPAN style="COLOR: #3333ff"&gt;Assembly&lt;/SPAN&gt; assm =&lt;/P&gt;&lt;P style="MARGIN: 0in 0in 0in 0.5in; FONT-SIZE: 10pt; mso-outline-level: 2"&gt;&lt;SPAN style="FONT-FAMILY: Gulim" lang=KO&gt;System.Reflection.&lt;SPAN style="COLOR: #3333ff"&gt;Assembly&lt;/SPAN&gt;.LoadFile(@"&lt;SPAN style="COLOR: #cc0000"&gt;D:&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Verdana" lang=EN-US&gt;&lt;SPAN style="COLOR: #cc0000"&gt;AssembliesSomeAssembly.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Gulim" lang=KO&gt;&lt;SPAN style="COLOR: #cc0000"&gt;dll&lt;/SPAN&gt;");&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1"&gt;&lt;SPAN style="FONT-FAMILY: Gulim" lang=KO&gt;&lt;SPAN style="COLOR: #3333ff"&gt;object&lt;/SPAN&gt; obj = assm.CreateInstance("&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Verdana" lang=EN-US&gt;&lt;SPAN style="COLOR: #cc0000"&gt;FullClassName&lt;/SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Gulim" lang=KO&gt;);&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1"&gt;&lt;SPAN style="FONT-FAMILY: Gulim" lang=KO&gt;출처 : &lt;A href="http://kkongchi.egloos.com/2133754"&gt;http://kkongchi.egloos.com/2133754&lt;/A&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1"&gt;&amp;nbsp;&lt;/P&gt;&lt;SPAN style="FONT-FAMILY: Gulim" lang=KO&gt;&lt;H3&gt;&lt;FONT size=2&gt;C#에서 클래스명으로만 생성&lt;/FONT&gt;&lt;/H3&gt;&lt;P&gt;디자인 패턴 공부중 자바소스를 C#으로 바꾸면서 하다가 알게된 사실이다.&lt;/P&gt;&lt;P&gt;자바에는&lt;/P&gt;&lt;P&gt;Class클래스 라는것이 있는데&lt;/P&gt;&lt;P&gt;Class 클래스의 forName 메소드를 사용해서 그 클래스를 동적으로 읽을수 있다. 또한 newInstance 메소드를 이용해서 그 클래스의 인스턴스를 한개 작성할수 있다.&lt;/P&gt;&lt;P&gt;Abstract Factory 패턴의 소스중에 이부분이 포함되어 있어서 C#에서 이러한 기능을 할수 있는 방법은 무었일까하고 찾아보았더니 Reflection으로 가능하였다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Gulim" lang=KO&gt;&lt;p id="more-87-0" class="moreless_fold" style="color: #000000; padding: 0 0 0 10px;"&gt;&lt;span style="cursor: pointer;" onclick="if (window.TC$PRIV_toggleMoreLessBlogger != undefined) {TC$PRIV_toggleMoreLessBlogger(this, '87-0','펼쳐두기..','접어두기..'); return false;} else {document.getElementById('content-87-0').style.display='';}"&gt;      펼쳐두기..&lt;/span&gt;&lt;/p&gt;  &lt;div id="content-87-0" class="moreless_content" style="display: none; border: 1px dashed #cccccc; background-color: #f3f3f3; margin: 0 10px padding: 5px;"&gt;&lt;P style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1"&gt;&lt;SPAN style="FONT-FAMILY: Gulim" lang=KO&gt;using System;&lt;br /&gt;using System.Collections.Generic;&lt;br /&gt;using System.Linq;&lt;br /&gt;using System.Text;&lt;br /&gt;&lt;STRONG&gt;&lt;FONT color=#38cc1a&gt;using System.Reflection;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;namespace ReflectionTEST&lt;br /&gt;{&lt;br /&gt;&amp;nbsp; &amp;nbsp; class Program&lt;br /&gt;&amp;nbsp; &amp;nbsp; {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; static void Main(string[] args)&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;FONT color=#38cc1a&gt;Assembly assembly = &lt;STRONG&gt;Assembly&lt;/STRONG&gt;.GetAssembly(typeof(Program));&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; TestClass myClass = assembly.&lt;STRONG&gt;CreateInstance&lt;/STRONG&gt;("ReflectionTEST.TestClass") as TestClass;&lt;br /&gt;&lt;/FONT&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; string myString = myClass.GetString();&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Console.WriteLine(myString);&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Console.ReadLine();&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp; &amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; public class TestClass&lt;br /&gt;&amp;nbsp; &amp;nbsp; {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public string GetString()&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return "Hello, World!";&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp; &amp;nbsp; }&lt;br /&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;/DIV&gt;&lt;P style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1"&gt;&lt;br /&gt;1) Assembly 타입의 인스턴스를 얻어와야 합니다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; C# 의 리플렉션 기술은 Assembly 타입의 인스턴스를 통해서 가능합니다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;2) Assembly 타입의 인스턴스를 이용하여, 원하는 클래스의 인스턴스를 생성하면 됩니다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; 이 때, CreateInstance() 메소드를 이용하면 되겠습니다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; 이 메소드에, 완전히 한정된 이름(Fully Qualified Name)을 지정해 줘야 합니다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; 단순히, TestClass 이것만 넣어주면 않 됩니다.&lt;/P&gt;&lt;P&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;네임스페이스 이름.클래스 이름&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; 이렇게 적어주면 되겠습니다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; "ReflectionTEST.TestClass"&lt;/P&gt;&lt;P&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; 예제에서 네임스페이스는 ReflectionTEST 이며,&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; 클래스는 TestClass 입니다.&lt;/P&gt;&lt;P&gt;&lt;br /&gt;3) 이제 TestClass 클래스의 인스턴스를 이용하여, 원하는 작업을 수행하면 됩니다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;STRONG&gt;TestClass myClass = assembly.CreateInstance("ReflectionTEST.TestClass") as TestClass;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;이 문장은&lt;/P&gt;&lt;P&gt;&lt;br /&gt;&amp;nbsp;&lt;STRONG&gt;TestClass myClass = new TestClass();&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;br /&gt;와 동일합니다.&lt;/P&gt;&lt;/SPAN&gt;&lt;P style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1"&gt;&lt;SPAN style="FONT-FAMILY: Gulim" lang=KO&gt;출처 : &lt;A href="http://kin.naver.com/detail/detail.php?d1id=1&amp;amp;dir_id=10115&amp;amp;docid=9620077&amp;amp;qb=QyMgY2xhc3Mg7YG0656Y7IqkIGZvcm5hbWU=&amp;amp;enc=utf8&amp;amp;pid=fVJR0loi5ThssZCl77lsss--191561&amp;amp;sid=Ss7N5YqozkoAADgVbLg"&gt;http://kin.naver.com/detail/detail.php?d1id=1&amp;amp;dir_id=10115&amp;amp;docid=9620077&amp;amp;qb=QyMgY2xhc3Mg7YG0656Y7IqkIGZvcm5hbWU=&amp;amp;enc=utf8&amp;amp;pid=fVJR0loi5ThssZCl77lsss--191561&amp;amp;sid=Ss7N5YqozkoAADgVbLg&lt;/A&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1"&gt;&amp;nbsp;&lt;/P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2357933784790449713-4184259487515194967?l=akangels-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akangels-textcube.blogspot.com/feeds/4184259487515194967/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://akangels-textcube.blogspot.com/2009/10/reflection.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/4184259487515194967'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/4184259487515194967'/><link rel='alternate' type='text/html' href='http://akangels-textcube.blogspot.com/2009/10/reflection.html' title='Reflection'/><author><name>아크엔젤스</name><uri>http://www.blogger.com/profile/10209348568937169243</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2357933784790449713.post-2886032472872503126</id><published>2009-10-09T14:24:00.000+09:00</published><updated>2011-01-29T19:57:25.533+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Abstract Factory'/><category scheme='http://www.blogger.com/atom/ns#' term='Design pattern'/><title type='text'>Abstract Factory Pattern</title><content type='html'>&lt;script src='http://ss.textcube.com/service/blog/script/blogger.js' type='text/javascript'&gt;&lt;/script&gt;&lt;STRONG&gt;&amp;nbsp;&lt;P&gt;&lt;STRONG&gt;Abstract Factory Pattern&lt;/STRONG&gt;&lt;/P&gt;&lt;DIV style="BORDER-BOTTOM: #b2e8ed 1px solid; BORDER-LEFT: #b2e8ed 1px solid; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #e1fdff; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #b2e8ed 1px solid; BORDER-RIGHT: #b2e8ed 1px solid; PADDING-TOP: 10px"&gt;Abstract Factory : 추상적인 공장&lt;br /&gt;&lt;FONT color=#4dbf00&gt;&lt;STRONG&gt;추상적인 공장에서는 추상적인 부품을 조합해서 추상적인 제품을 만듭니다.&lt;/STRONG&gt;&lt;/FONT&gt;&lt;br /&gt;이게 무슨말인가?...&lt;br /&gt;다시 말씀드리면..&lt;br /&gt;오브젝트(객체) 지향에 있어서 추상적이란 단어는 구체적으로 어떻게 구현되고 있는지에 대해서는 생각하지 않고, 인터페이스(API)만 생각하는 상태라는 의미입니다.&lt;br /&gt;&lt;STRONG&gt;&lt;FONT color=#4dbf00&gt;즉, 부품의 구체적인 구현에는 주목하지 않고 인터페이스(API)에 주목합니다. 그리고 인터페이스(API)만을 사용해서 부픔을 조립하고 제품을 완성합니다.&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/DIV&gt;&lt;/STRONG&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&lt;FONT color=#000000&gt;등장인물&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;DIV style="BORDER-BOTTOM: #b2e8ed 1px solid; BORDER-LEFT: #b2e8ed 1px solid; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #e1fdff; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #b2e8ed 1px solid; BORDER-RIGHT: #b2e8ed 1px solid; PADDING-TOP: 10px"&gt;&lt;STRONG&gt;AbstractProduct(추상적인 제품)의 역할&lt;br /&gt;&lt;/STRONG&gt;: AbstractProduct는 AbstractFactory 역할에 의해 만들어지는 추상적인 부품이나 제품의 인터페이스 결정&lt;br /&gt;&amp;nbsp; 예제에서 Link, Tray, Page 클래스&lt;br /&gt;&lt;br /&gt;&lt;STRONG&gt;AbstractFactory(추상적인 공장)의 역할&lt;br /&gt;&lt;/STRONG&gt;: AbstractFactory는 AbstractProduct 역할의 인스턴스를 만들어 내기 위한 인터페이스(API)를 결정&lt;br /&gt;&amp;nbsp; 예제에서 Factory 클래스&lt;br /&gt;&lt;br /&gt;&lt;STRONG&gt;Client의 역할&lt;br /&gt;&lt;/STRONG&gt;: AbstractFactory역할과 AbstractProduct역할의 인터페이스(API)만을 사용해서 주어진 역할을 실행&lt;br /&gt;&amp;nbsp; 예제에서 Main 클래스&lt;br /&gt;&lt;br /&gt;&lt;STRONG&gt;ConcreteProduct(구체적인 제품)의 역할&lt;br /&gt;&lt;/STRONG&gt;: ConcreteProduct는 AbstractProduct 역할의 인터페이스(API)를 구현&lt;br /&gt;&amp;nbsp; 예제에서 &lt;br /&gt;&amp;nbsp; listfactory패키지 : ListLink, ListTray, ListPage 클래스&lt;br /&gt;&amp;nbsp; tablefactory패키지 : TableLink, TableTray, TablePage 클래스&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;STRONG&gt;ConcreteFactory(구체적인 공장)의 역할&lt;br /&gt;&lt;/STRONG&gt;: ConcreteFactory는 AbstractFactory 역할의 인터페이스(API)를 구현&lt;br /&gt;&amp;nbsp; 예제에서&lt;br /&gt;&amp;nbsp; listfactory 패키지 : ListFactory 클래스&lt;br /&gt;&amp;nbsp; tablefactory 패키지 : TableFactory 클래스&lt;br /&gt;&lt;br /&gt;&lt;STRONG&gt;클래스 다이어그램&lt;/STRONG&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XHKHSqx5WE.png" style="width:541px;height:438px;" alt="" onclick="TC$PRIV_open_img('http://ss.textcube.com/blog/1/10879/attach/XHKHSqx5WE.png')" /&gt;&lt;/div&gt;&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;예제프로그램&lt;/STRONG&gt;&lt;/P&gt;&lt;DIV style="BORDER-BOTTOM: #b2e8ed 1px solid; BORDER-LEFT: #b2e8ed 1px solid; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #e1fdff; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #b2e8ed 1px solid; BORDER-RIGHT: #b2e8ed 1px solid; PADDING-TOP: 10px"&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XbOTdfB9ko.png" style="width:545px;height:324px;" alt="" onclick="TC$PRIV_open_img('http://ss.textcube.com/blog/1/10879/attach/XbOTdfB9ko.png')" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XLMlLsXTd6.png" style="width:544px;height:437px;" alt="" onclick="TC$PRIV_open_img('http://ss.textcube.com/blog/1/10879/attach/XLMlLsXTd6.png')" /&gt;&lt;/div&gt;소스파일은 받아서 보시기 바랍니다.. 여기에 쓰기엔 양이 좀 많네요...;;&lt;br /&gt;자바소스의 경우 앞서 써놓은 곳에서 받으시거나 영진닷컴 홈페이지에 가서 받으실수도 있습니다.&lt;br /&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;a href="http://ss.textcube.com/blog/1/10879/attach/XBSR0CVC1a.zip/AbstractFactory%28C%23%29.zip" rel="enclosure" &gt;&lt;img src="http://ss.textcube.com/service/blog/image/extension/zip.gif" alt="" style="vertical-align: middle;" /&gt; AbstractFactory(C#).zip&lt;/a&gt;&lt;/div&gt;으아아악.. 자바.. C# 좀.. 친해지면 안되겠니..;;&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;출처 : Java 언어로 배우는 디자인 패턴 입문(영진닷컴)&lt;/P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2357933784790449713-2886032472872503126?l=akangels-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akangels-textcube.blogspot.com/feeds/2886032472872503126/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://akangels-textcube.blogspot.com/2009/10/abstract-factory-pattern.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/2886032472872503126'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/2886032472872503126'/><link rel='alternate' type='text/html' href='http://akangels-textcube.blogspot.com/2009/10/abstract-factory-pattern.html' title='Abstract Factory Pattern'/><author><name>아크엔젤스</name><uri>http://www.blogger.com/profile/10209348568937169243</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2357933784790449713.post-518060988973673343</id><published>2009-10-08T17:01:00.000+09:00</published><updated>2011-01-29T19:57:25.432+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Bulider Pattern'/><category scheme='http://www.blogger.com/atom/ns#' term='Design pattern'/><title type='text'>Builder Pattern</title><content type='html'>&lt;script src='http://ss.textcube.com/service/blog/script/blogger.js' type='text/javascript'&gt;&lt;/script&gt;&lt;P&gt;&lt;STRONG&gt;Builder Pattern&lt;/STRONG&gt;&lt;/P&gt;&lt;DIV style="BORDER-BOTTOM: #b2e8ed 1px solid; BORDER-LEFT: #b2e8ed 1px solid; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #e1fdff; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #b2e8ed 1px solid; BORDER-RIGHT: #b2e8ed 1px solid; PADDING-TOP: 10px"&gt;▪ 구조를 가진 인스턴스를 쌓아 올리는 것&lt;br /&gt;&amp;nbsp; : 도시에는 빌딩이 많습니다. building은 구조를 가진 커다란 건축물입니다. 구조를 가지고 있는 커다란 것을 건축하거나 구축하는 것을 build라고 합니다. 빌딩을 세울 때 우선 지반을 다지고, 골격을 세우고, 아래에서 위로 조금씩 만들어갑니다. 일반적으로 복잡한 구조물을 세울 때 한 번에 완성시키기는 어렵습니다. 우선 전체를 구성하고 있는 각 부분을 만들고 단계를 밟아 만들어 나갑니다.&lt;br /&gt;&lt;br /&gt;또 다른 예를 들어보자면.. 롯데리아의 햄버거 세트 메뉴를 들어보겠습니다.&lt;br /&gt;세트메뉴의 내용물을 보면&lt;br /&gt;▫ 햄버거 : 여러가지 햄버거중 한가지(불고기,치즈,한우 등)&lt;br /&gt;▫ 후식 : 감자 or 치즈스틱&lt;br /&gt;▫ 음료 : 콜라 or 사이다&lt;br /&gt;&lt;br /&gt;세트 메뉴의 큰 틀은 동일하지만 input에 따라 서로 다른 세트메뉴가 나옵니다. &lt;br /&gt;이럴때 빌더 패턴을 씁니다.&lt;br /&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XGcPGlFigI.jpg" style="width:553px;height:323px;" alt=""  /&gt;&lt;/div&gt;&lt;br /&gt;출처 : &lt;A href="http://www.allapplabs.com/java_design_patterns/builder_pattern.htm"&gt;http://www.allapplabs.com/java_design_patterns/builder_pattern.htm&lt;/A&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;A href="http://terrylee.cnblogs.com/archive/2005/12/19/299878.html"&gt;&lt;FONT color=#1e7a98&gt;http://terrylee.cnblogs.com/archive/2005/12/19/299878.html&lt;/FONT&gt;&lt;/A&gt;&amp;nbsp;&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Builder Pattern의 등장인물&lt;/STRONG&gt;&lt;/P&gt;&lt;DIV style="BORDER-BOTTOM: #b2e8ed 1px solid; BORDER-LEFT: #b2e8ed 1px solid; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #e1fdff; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #b2e8ed 1px solid; BORDER-RIGHT: #b2e8ed 1px solid; PADDING-TOP: 10px"&gt;&lt;STRONG&gt;Bilder(건축자)의 역할&lt;br /&gt;&lt;/STRONG&gt;: 인스턴스를 생성하기 위한 인터페이스(API)를 결정, 인스턴스의 각 부분을 만들기 위한 메소드 준비&lt;br /&gt;&lt;br /&gt;&lt;STRONG&gt;ConcreteBuilder(구체적인 건축자) 역할&lt;br /&gt;&lt;/STRONG&gt;: Builder 역할의 인터페이스를 구현하고 있는 클래스, 실제의 인스턴스 작성으로 호출되는 메소드가 여기에 정의되어 있습니다. 또한 최종적인 결과를 얻기 위한 메소드가 준비되어 있습니다.&lt;br /&gt;&lt;br /&gt;&lt;STRONG&gt;Director(감독자)의 역할&lt;br /&gt;&lt;/STRONG&gt;: Builder 역할의 인터페이스를 사용해서 인스턴스를 생성합니다. ConcreteBuilder 역할에 의존한 프로그래밍은 하지 않습니다. ConcreteBuilder 역할과 관계없이 제대로 기능하도록 Builder 역할의 메소드만을 사용합니다.&lt;br /&gt;&lt;br /&gt;&lt;STRONG&gt;Client(의뢰인)의 역할&lt;br /&gt;&lt;/STRONG&gt;: Builder 패턴을 이용하는 역할&lt;br /&gt;&lt;br /&gt;&lt;STRONG&gt;클래스 다이어그램&lt;/STRONG&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XNgojGjmo4.jpg" style="width:537px;height:272px;" alt="" onclick="TC$PRIV_open_img('http://ss.textcube.com/blog/1/10879/attach/XNgojGjmo4.jpg')" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;STRONG&gt;시퀸스 다이어그램&lt;/STRONG&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XBOXQiUaiQ.jpg" style="width:527px;height:487px;" alt="" onclick="TC$PRIV_open_img('http://ss.textcube.com/blog/1/10879/attach/XBOXQiUaiQ.jpg')" /&gt;&lt;/div&gt;&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;예제프로그램&lt;/STRONG&gt;&lt;/P&gt;&lt;DIV style="BORDER-BOTTOM: #b2e8ed 1px solid; BORDER-LEFT: #b2e8ed 1px solid; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #e1fdff; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #b2e8ed 1px solid; BORDER-RIGHT: #b2e8ed 1px solid; PADDING-TOP: 10px"&gt;문서를 작성하는 프로그램&lt;br /&gt;&amp;nbsp; ▪ 타이틀을 한개 포함&lt;br /&gt;&amp;nbsp; ▪ 문자열을 몇 개 포함&lt;br /&gt;&amp;nbsp; ▪ 개별 항목을 몇 개 포함&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XapzR43G8o.png" style="width:544px;height:186px;" alt="" onclick="TC$PRIV_open_img('http://ss.textcube.com/blog/1/10879/attach/XapzR43G8o.png')" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;STRONG&gt;예제 프로그램의 클래스 다이어그램&lt;/STRONG&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/Xcf5chwkkg.png" style="width:539px;height:307px;" alt="" onclick="TC$PRIV_open_img('http://ss.textcube.com/blog/1/10879/attach/Xcf5chwkkg.png')" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;a href="http://ss.textcube.com/blog/1/10879/attach/XWiWKSSFDc.alz/Builder%20Pattern%28C%23%29.alz" rel="enclosure" &gt;&lt;img src="http://ss.textcube.com/service/blog/image/extension/unknown.gif" alt="" style="vertical-align: middle;" /&gt; Builder Pattern(C#).alz&lt;/a&gt;&lt;/div&gt;&lt;/DIV&gt;&lt;P&gt;&lt;br /&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;출처 : Java로 언어로 배우는 디자인 패턴 입문(영진닷컴)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;// 그러고보니.. 소스를 올리면서 개발환경을 안적었네요.. Visual stdio 2008 입니다.&lt;/P&gt;&lt;P&gt;// 자바에 대한 예제를 원하시는 분은 앞서 올려놓은 자료를 받아 보시기 바랍니다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&lt;/P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2357933784790449713-518060988973673343?l=akangels-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akangels-textcube.blogspot.com/feeds/518060988973673343/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://akangels-textcube.blogspot.com/2009/10/builder-pattern.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/518060988973673343'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/518060988973673343'/><link rel='alternate' type='text/html' href='http://akangels-textcube.blogspot.com/2009/10/builder-pattern.html' title='Builder Pattern'/><author><name>아크엔젤스</name><uri>http://www.blogger.com/profile/10209348568937169243</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2357933784790449713.post-1568815392287866209</id><published>2009-10-07T14:55:00.000+09:00</published><updated>2011-01-29T19:57:25.292+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Prototype Pattern'/><category scheme='http://www.blogger.com/atom/ns#' term='implements와 extends의 차이'/><category scheme='http://www.blogger.com/atom/ns#' term='Design pattern'/><category scheme='http://www.blogger.com/atom/ns#' term='Prototype'/><title type='text'>Prototype Pattern</title><content type='html'>&lt;script src='http://ss.textcube.com/service/blog/script/blogger.js' type='text/javascript'&gt;&lt;/script&gt;&lt;P&gt;&lt;STRONG&gt;Prototype Pattern?&lt;/STRONG&gt;&lt;/P&gt;&lt;DIV style="BORDER-BOTTOM: #b2e8ed 1px solid; BORDER-LEFT: #b2e8ed 1px solid; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #e1fdff; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #b2e8ed 1px solid; BORDER-RIGHT: #b2e8ed 1px solid; PADDING-TOP: 10px"&gt;▪ 종류가 너무 많아 클래스로 정리되지 않는 경우&lt;br /&gt;&amp;nbsp; : 취급하는 오브젝트의 종류가 너무 많아서 각각을 별도의 클래스로 만들어 다수의 소스 파일을 &lt;br /&gt;&amp;nbsp; &amp;nbsp; 작성해야 하는 경우&lt;br /&gt;▪ 클래스로부터 인스턴스 생성이 어려운 경우&lt;br /&gt;&amp;nbsp; : 생성하고 싶은 인스턴스가 복잡한 작업을 거쳐 만들어지기 때문에 클래스로부터 만들기가 매우 &lt;br /&gt;&amp;nbsp; &amp;nbsp; 어려운 경우&lt;br /&gt;▪ framework와 생성할 인스턴스를 분리하고 싶은 경우&lt;br /&gt;&amp;nbsp; : 인스턴스를 생성할 때의 framework를 특정 클래스에 의존하지 않도록 만들고 싶은 경우&lt;br /&gt;&lt;br /&gt;☞ Prototype Pattern&lt;br /&gt;☞ 원형이 되는 인스턴스, 모범이 되는 인스턴스를 기초로 새로운 인스턴스를 만드는 것&lt;/DIV&gt;&lt;P&gt;&lt;br /&gt;이번에는 예제부터 해보겠습니다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;예제프로그램&lt;/STRONG&gt;&lt;/P&gt;&lt;DIV style="BORDER-BOTTOM: #b2e8ed 1px solid; BORDER-LEFT: #b2e8ed 1px solid; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #e1fdff; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #b2e8ed 1px solid; BORDER-RIGHT: #b2e8ed 1px solid; PADDING-TOP: 10px"&gt;&lt;STRONG&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XN3aXwgdo6.jpg" style="width:535px;height:344px;" alt="" onclick="TC$PRIV_open_img('http://ss.textcube.com/blog/1/10879/attach/XN3aXwgdo6.jpg')" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XDhbo4QBRk.jpg" style="width:540px;height:154px;" alt="" onclick="TC$PRIV_open_img('http://ss.textcube.com/blog/1/10879/attach/XDhbo4QBRk.jpg')" /&gt;&lt;/div&gt;&lt;br /&gt;Product 인터페이스&lt;/STRONG&gt; &lt;p id="more-84-0" class="moreless_fold" style="color: #000000; padding: 0 0 0 10px;"&gt;&lt;span style="cursor: pointer;" onclick="if (window.TC$PRIV_toggleMoreLessBlogger != undefined) {TC$PRIV_toggleMoreLessBlogger(this, '84-0','펼쳐두기..','접어두기..'); return false;} else {document.getElementById('content-84-0').style.display='';}"&gt;      펼쳐두기..&lt;/span&gt;&lt;/p&gt;  &lt;div id="content-84-0" class="moreless_content" style="display: none; border: 1px dashed #cccccc; background-color: #f3f3f3; margin: 0 10px padding: 5px;"&gt;using System;&lt;br /&gt;namespace Prototype_Pattern.framework&lt;br /&gt;{&lt;br /&gt;&amp;nbsp; &amp;nbsp; public interface Product : ICloneable&lt;br /&gt;&amp;nbsp; &amp;nbsp; {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; void use(String s);&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Product createClone();&lt;br /&gt;&amp;nbsp; &amp;nbsp; }&lt;br /&gt;}&lt;/DIV&gt;: Product 인터페이스는 ICloneable 인터페이스를 상속&lt;br /&gt;&amp;nbsp; 이부분에서 상속이라고해야할지.. implements라고 해야할지 헷갈렸었다. 그런데 간단명료하게 알려준 분이 네이버 지식인에 계셨다.. 하핫..&amp;nbsp; &lt;A href="http://kin.naver.com/detail/detail.php?d1id=1&amp;amp;dir_id=10106&amp;amp;docid=2573546&amp;amp;qb=aW1wbGVtZW50cw==&amp;amp;enc=utf8&amp;amp;pid=fVwEoloi5TVssaYfAhVsss--259669&amp;amp;sid=SswFrE3My0oAAEQXvpU" target=_blank&gt;Implements/extends의 차이&lt;/A&gt; &lt;p id="more-84-1" class="moreless_fold" style="color: #000000; padding: 0 0 0 10px;"&gt;&lt;span style="cursor: pointer;" onclick="if (window.TC$PRIV_toggleMoreLessBlogger != undefined) {TC$PRIV_toggleMoreLessBlogger(this, '84-1','펼쳐두기..','접어두기..'); return false;} else {document.getElementById('content-84-1').style.display='';}"&gt;      펼쳐두기..&lt;/span&gt;&lt;/p&gt;  &lt;div id="content-84-1" class="moreless_content" style="display: none; border: 1px dashed #cccccc; background-color: #f3f3f3; margin: 0 10px padding: 5px;"&gt;&lt;P&gt;implements/extends는 클래스와 클래스간의 1대 1관계에 대한 선언입니다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;A 클래스를 상속받아서 B 클래스를 만드는 경우는 extends를 사용하셔야 하구요.&lt;/P&gt;&lt;P&gt;A 인터페이스를 사용해서 &amp;nbsp;B 클래스를 &amp;nbsp;만드는 경우는 implements를 사용하셔야 합니다.&lt;/P&gt;&lt;P&gt;A 인터페이스를 사용해서 B 인터페이스를 만드는 경우는 extends를 사용하셔야 하구요.&lt;/P&gt;&lt;P&gt;A 클래스를 상속받아서 B 인터페이스를 만드는 경우는 불가능합니다.&lt;br /&gt;&lt;/P&gt;&lt;/DIV&gt;&lt;br /&gt;&lt;STRONG&gt;Manager 클래스&lt;/STRONG&gt; &lt;p id="more-84-2" class="moreless_fold" style="color: #000000; padding: 0 0 0 10px;"&gt;&lt;span style="cursor: pointer;" onclick="if (window.TC$PRIV_toggleMoreLessBlogger != undefined) {TC$PRIV_toggleMoreLessBlogger(this, '84-2','펼쳐두기..','접어두기..'); return false;} else {document.getElementById('content-84-2').style.display='';}"&gt;      펼쳐두기..&lt;/span&gt;&lt;/p&gt;  &lt;div id="content-84-2" class="moreless_content" style="display: none; border: 1px dashed #cccccc; background-color: #f3f3f3; margin: 0 10px padding: 5px;"&gt;using System;&lt;br /&gt;using System.Collections;&lt;br /&gt;namespace Prototype_Pattern.framework&lt;br /&gt;{&lt;br /&gt;&amp;nbsp; &amp;nbsp; class Manager&lt;br /&gt;&amp;nbsp; &amp;nbsp; {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; private Hashtable showcase = new Hashtable();&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public void register(String name, Product proto)&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; showcase.Add(name, proto);&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public Product create(String protoname)&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Product p = (Product)showcase[protoname];&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return p.createClone();&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp; &amp;nbsp; }&lt;br /&gt;}&lt;br /&gt;&lt;/DIV&gt;&lt;br /&gt;&lt;STRONG&gt;MessageBox 클래스&lt;/STRONG&gt; &lt;p id="more-84-3" class="moreless_fold" style="color: #000000; padding: 0 0 0 10px;"&gt;&lt;span style="cursor: pointer;" onclick="if (window.TC$PRIV_toggleMoreLessBlogger != undefined) {TC$PRIV_toggleMoreLessBlogger(this, '84-3','펼쳐두기..','접어두기..'); return false;} else {document.getElementById('content-84-3').style.display='';}"&gt;      펼쳐두기..&lt;/span&gt;&lt;/p&gt;  &lt;div id="content-84-3" class="moreless_content" style="display: none; border: 1px dashed #cccccc; background-color: #f3f3f3; margin: 0 10px padding: 5px;"&gt;using System;&lt;br /&gt;using Prototype_Pattern.framework;&lt;br /&gt;namespace Prototype_Pattern&lt;br /&gt;{&lt;br /&gt;&amp;nbsp; &amp;nbsp; class MessageBox : Product&lt;br /&gt;&amp;nbsp; &amp;nbsp; {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; private char decochar;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public MessageBox(char decochar)&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.decochar = decochar;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public void use(String s)&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; int length = s.Length;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for (int i = 0; i &amp;lt; length + 4; i++)&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Console.Write(decochar);&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Console.WriteLine("");&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Console.WriteLine(decochar + " " + s + " " + decochar);&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for (int i = 0; i &amp;lt; length + 4; i++)&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Console.Write(decochar);&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Console.WriteLine("");&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public Product createClone()&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Product p = null;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; try&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; p = (Product)Clone();&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; catch (Exception e)&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Console.WriteLine(e.Message);&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return p;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public object Clone()&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // TODO:&amp;nbsp; Clone implementation&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return this;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp; &amp;nbsp; }&lt;br /&gt;}&lt;/DIV&gt;&lt;br /&gt;&lt;STRONG&gt;UnderlinePen 클래스&lt;/STRONG&gt; &lt;p id="more-84-4" class="moreless_fold" style="color: #000000; padding: 0 0 0 10px;"&gt;&lt;span style="cursor: pointer;" onclick="if (window.TC$PRIV_toggleMoreLessBlogger != undefined) {TC$PRIV_toggleMoreLessBlogger(this, '84-4','펼쳐두기..','접어두기..'); return false;} else {document.getElementById('content-84-4').style.display='';}"&gt;      펼쳐두기..&lt;/span&gt;&lt;/p&gt;  &lt;div id="content-84-4" class="moreless_content" style="display: none; border: 1px dashed #cccccc; background-color: #f3f3f3; margin: 0 10px padding: 5px;"&gt;using System;&lt;br /&gt;using Prototype_Pattern.framework;&lt;br /&gt;namespace Prototype_Pattern&lt;br /&gt;{&lt;br /&gt;&amp;nbsp; &amp;nbsp; public class UnderlinePen : Product&lt;br /&gt;&amp;nbsp; &amp;nbsp; {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; private char ulchar;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public UnderlinePen(char ulchar)&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.ulchar = ulchar;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public void use(String s)&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; int length = s.Length;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Console.WriteLine("\"" + s + "\"");&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Console.Write(" ");&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for (int i = 0; i &amp;lt; length; i++)&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Console.Write(ulchar);&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Console.WriteLine("");&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public Product createClone()&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Product p = null;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; try&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; p = (Product)Clone();&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; catch (Exception e)&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Console.WriteLine(e.Message);&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return p;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public object Clone()&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // TODO:&amp;nbsp; Clone implementation&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return this;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp; &amp;nbsp; }&lt;br /&gt;}&lt;/DIV&gt;&lt;br /&gt;&lt;STRONG&gt;Main 클래스&lt;/STRONG&gt; &lt;p id="more-84-5" class="moreless_fold" style="color: #000000; padding: 0 0 0 10px;"&gt;&lt;span style="cursor: pointer;" onclick="if (window.TC$PRIV_toggleMoreLessBlogger != undefined) {TC$PRIV_toggleMoreLessBlogger(this, '84-5','펼쳐두기..','접어두기..'); return false;} else {document.getElementById('content-84-5').style.display='';}"&gt;      펼쳐두기..&lt;/span&gt;&lt;/p&gt;  &lt;div id="content-84-5" class="moreless_content" style="display: none; border: 1px dashed #cccccc; background-color: #f3f3f3; margin: 0 10px padding: 5px;"&gt;using Prototype_Pattern.framework;&lt;br /&gt;namespace Prototype_Pattern&lt;br /&gt;{&lt;br /&gt;&amp;nbsp; &amp;nbsp; class Program&lt;br /&gt;&amp;nbsp; &amp;nbsp; {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; static void Main(string[] args)&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // 준비&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Manager manager = new Manager();&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; UnderlinePen upen = new UnderlinePen('~');&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; MessageBox mbox = new MessageBox('*');&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; MessageBox sbox = new MessageBox('/');&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; manager.register("strong message", upen);&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; manager.register("warning box", mbox);&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; manager.register("slash box", sbox);&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // 생성&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Product p1 = manager.create("strong message");&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; p1.use("Hello, world.");&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Product p2 = manager.create("warning box");&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; p2.use("Hello, world.");&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Product p3 = manager.create("slash box");&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; p3.use("Hello, world.");&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp; &amp;nbsp; }&lt;br /&gt;}&lt;/DIV&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;a href="http://ss.textcube.com/blog/1/10879/attach/XSclfe12r2.alz/Prototype%20Pattern%28C%23%29.alz" rel="enclosure" &gt;&lt;img src="http://ss.textcube.com/service/blog/image/extension/unknown.gif" alt="" style="vertical-align: middle;" /&gt; Prototype Pattern(C#).alz&lt;/a&gt;&lt;/div&gt;&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;: Java와 C#이 다른점이 좀 있어서 C#으로 바꾸는데 좀... 짜증스러웠다..;; 어쨌든.. 아마도.. 이후의 더 복잡한 것을 c#으로 할려면 더 많이 바꿀필요가 있겠지만.. 이참에.. JAVA소스를 C#소스로 바꾸는 프로그램이나 만들까부다..;; 쉽진 않겠지만.. 아무튼.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Prototye 패턴의 등장인물&lt;/STRONG&gt;&lt;/P&gt;&lt;STRONG&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;DIV style="BORDER-BOTTOM: #b2e8ed 1px solid; BORDER-LEFT: #b2e8ed 1px solid; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #e1fdff; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #b2e8ed 1px solid; BORDER-RIGHT: #b2e8ed 1px solid; PADDING-TOP: 10px"&gt;&lt;STRONG&gt;Prototype 패턴의 클래스 다이어그램&lt;/STRONG&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XE4goK0Bqe.jpg" style="width:493px;height:329px;" alt="" onclick="TC$PRIV_open_img('http://ss.textcube.com/blog/1/10879/attach/XE4goK0Bqe.jpg')" /&gt;&lt;/div&gt; &lt;P&gt;&lt;STRONG&gt;Prototype(원형)의 역할&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;인스턴스를 복사하여 새로운 인스턴스를 만들기 위한 메소드를 결정&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;ConcretePrototype(구체적인 원형)의 역할&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;인스턴스를 복사해서 새로운 인스턴스를 만드는 메소드를 실제로 구현&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Client(이용자) 역할&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;인스턴스를 복사하는 메소드를 이용해서 새로운 인스턴스를 만듬&lt;/P&gt;&lt;/DIV&gt;&lt;/STRONG&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;참고문헌 : Java언어로 배우는 디자인 패턴 입문(영진닷컴)&lt;/P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2357933784790449713-1568815392287866209?l=akangels-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akangels-textcube.blogspot.com/feeds/1568815392287866209/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://akangels-textcube.blogspot.com/2009/10/prototype-pattern.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/1568815392287866209'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/1568815392287866209'/><link rel='alternate' type='text/html' href='http://akangels-textcube.blogspot.com/2009/10/prototype-pattern.html' title='Prototype Pattern'/><author><name>아크엔젤스</name><uri>http://www.blogger.com/profile/10209348568937169243</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2357933784790449713.post-6191349964359725653</id><published>2009-10-06T11:42:00.000+09:00</published><updated>2011-01-29T19:57:25.134+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Singleton pattern'/><category scheme='http://www.blogger.com/atom/ns#' term='Design pattern'/><title type='text'>Singleton Pattern</title><content type='html'>&lt;script src='http://ss.textcube.com/service/blog/script/blogger.js' type='text/javascript'&gt;&lt;/script&gt;&lt;P&gt;&lt;STRONG&gt;Singleton Pattern?&lt;/STRONG&gt;&lt;/P&gt;&lt;DIV style="BORDER-BOTTOM: #b2e8ed 1px solid; BORDER-LEFT: #b2e8ed 1px solid; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #e1fdff; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #b2e8ed 1px solid; BORDER-RIGHT: #b2e8ed 1px solid; PADDING-TOP: 10px"&gt;▪ 지정한 클래스의 인스턴스가 '절대로' 1개밖에 존재하지 않는 것을 '보증'하고 싶을 때&lt;br /&gt;▪ 인스턴스가 1개밖에 존재하지 않는 것을 플그램 상에서 표현하고 싶을 때&lt;br /&gt;&amp;nbsp; &amp;nbsp;☞ 인스턴스가 한개 밖에 존재하지 않는 것을 보증하는 패턴&lt;/DIV&gt;&lt;P&gt;&lt;br /&gt;&lt;STRONG&gt;Singleton의 역할&lt;/STRONG&gt;&lt;/P&gt;&lt;DIV style="BORDER-BOTTOM: #b2e8ed 1px solid; BORDER-LEFT: #b2e8ed 1px solid; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #e1fdff; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #b2e8ed 1px solid; BORDER-RIGHT: #b2e8ed 1px solid; PADDING-TOP: 10px"&gt;Singleton 패턴에는 Singleton의 역할만이 존재합니다. Singleton 역할은 유일한 인스턴스를 얻기위한 static 메소드를 가지고 있습니다. 이 메소드는 언제나 동일한 인스턴스를 반환합니다.&lt;br /&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XAwiHGizQI.jpg" style="width:331px;height:186px;" alt=""  /&gt;&lt;/div&gt;&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;예제프로그램&lt;/STRONG&gt;&lt;/P&gt;&lt;DIV style="BORDER-BOTTOM: #b2e8ed 1px solid; BORDER-LEFT: #b2e8ed 1px solid; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #e1fdff; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #b2e8ed 1px solid; BORDER-RIGHT: #b2e8ed 1px solid; PADDING-TOP: 10px"&gt;&lt;STRONG&gt;Singleton 클래스&lt;br /&gt;&lt;/STRONG&gt;: Singleton 클래스의 생성자는 private&lt;br /&gt;&lt;p id="more-83-0" class="moreless_fold" style="color: #000000; padding: 0 0 0 10px;"&gt;&lt;span style="cursor: pointer;" onclick="if (window.TC$PRIV_toggleMoreLessBlogger != undefined) {TC$PRIV_toggleMoreLessBlogger(this, '83-0','펼쳐두기..','접어두기..'); return false;} else {document.getElementById('content-83-0').style.display='';}"&gt;      펼쳐두기..&lt;/span&gt;&lt;/p&gt;  &lt;div id="content-83-0" class="moreless_content" style="display: none; border: 1px dashed #cccccc; background-color: #f3f3f3; margin: 0 10px padding: 5px;"&gt;using System;&lt;br /&gt;namespace Singleton_Pattern&lt;br /&gt;{&lt;br /&gt;&amp;nbsp; &amp;nbsp; class Singleton&lt;br /&gt;&amp;nbsp; &amp;nbsp; {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; private static Singleton singleton = new Singleton();&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; private Singleton()&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Console.WriteLine("인스턴스를 생성했습니다");&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public static Singleton getInstance()&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return singleton;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp; &amp;nbsp; }&lt;br /&gt;}&lt;/DIV&gt;&lt;br /&gt;&lt;STRONG&gt;Main클래스&lt;br /&gt;&lt;/STRONG&gt;&lt;p id="more-83-1" class="moreless_fold" style="color: #000000; padding: 0 0 0 10px;"&gt;&lt;span style="cursor: pointer;" onclick="if (window.TC$PRIV_toggleMoreLessBlogger != undefined) {TC$PRIV_toggleMoreLessBlogger(this, '83-1','펼쳐두기..','접어두기..'); return false;} else {document.getElementById('content-83-1').style.display='';}"&gt;      펼쳐두기..&lt;/span&gt;&lt;/p&gt;  &lt;div id="content-83-1" class="moreless_content" style="display: none; border: 1px dashed #cccccc; background-color: #f3f3f3; margin: 0 10px padding: 5px;"&gt;using System;&lt;br /&gt;namespace Singleton_Pattern&lt;br /&gt;{&lt;br /&gt;&amp;nbsp; &amp;nbsp; class Program&lt;br /&gt;&amp;nbsp; &amp;nbsp; {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; static void Main(string[] args)&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Console.WriteLine("Start");&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Singleton obj1 = Singleton.getInstance();&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Singleton obj2 = Singleton.getInstance();&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (obj1 == obj2)&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Console.WriteLine("obj1과 obj2는 같은 인스턴스입니다");&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; else&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Console.WriteLine("obj1과 obj2는 다른 인스턴스입니다");&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Console.WriteLine("End");&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp; &amp;nbsp; }&lt;br /&gt;}&lt;/DIV&gt;&lt;/DIV&gt;&lt;P&gt;&lt;br /&gt;&lt;br /&gt;&lt;STRONG&gt;왜 제한할 필요가 있는가?&lt;/STRONG&gt;&lt;/P&gt;&lt;DIV style="BORDER-BOTTOM: #b2e8ed 1px solid; BORDER-LEFT: #b2e8ed 1px solid; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #e1fdff; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #b2e8ed 1px solid; BORDER-RIGHT: #b2e8ed 1px solid; PADDING-TOP: 10px"&gt;제한을 한다는 것은 전제가 되는 조건을 늘린다는 의미&lt;br /&gt;복수의 인스턴스가 존재하면 인스턴스들이 서로 영향을 미치고, 뜻하지 않은 버그가 발생할 가능성이 있습니다. 그러나 인스턴스가 1개밖에 없다는 보증이 있으면 그 전제조건 아래서 프로그래밍할 수 있습니다.&lt;/DIV&gt;&lt;P&gt;&lt;br /&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;유일한 인스턴스는 언제 생성되는가?&lt;/STRONG&gt;&lt;/P&gt;&lt;DIV style="BORDER-BOTTOM: #b2e8ed 1px solid; BORDER-LEFT: #b2e8ed 1px solid; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #e1fdff; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #b2e8ed 1px solid; BORDER-RIGHT: #b2e8ed 1px solid; PADDING-TOP: 10px"&gt;예제 프로그램의 실행결과를 보면 'Start'라고 표시하고 나서 '인스턴스를 생성했습니다'라고 표시하고 있습니다. 프로그램의 실행 개시 후 최초로 getInstance 메소드를 호출했을 때 Singleton 클래스는 초기화 됩니다. 그리고 이때 static필드의 초기화가 이루어지고 유일한 인스턴스가 만들어집니다.&lt;/DIV&gt;&lt;P&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;a href="http://ss.textcube.com/blog/1/10879/attach/XNMfD52Aye.alz/Singleton%20Pattern%28C%23%29.alz" rel="enclosure" &gt;&lt;img src="http://ss.textcube.com/service/blog/image/extension/unknown.gif" alt="" style="vertical-align: middle;" /&gt; Singleton Pattern(C#).alz&lt;/a&gt;&lt;/div&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;출처 : Java 언어로 배우는 디자인 패턴 입문(영진닷컴)&lt;/P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2357933784790449713-6191349964359725653?l=akangels-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akangels-textcube.blogspot.com/feeds/6191349964359725653/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://akangels-textcube.blogspot.com/2009/10/singleton-pattern.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/6191349964359725653'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/6191349964359725653'/><link rel='alternate' type='text/html' href='http://akangels-textcube.blogspot.com/2009/10/singleton-pattern.html' title='Singleton Pattern'/><author><name>아크엔젤스</name><uri>http://www.blogger.com/profile/10209348568937169243</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2357933784790449713.post-4015195759083409207</id><published>2009-10-05T12:52:00.000+09:00</published><updated>2011-01-29T19:57:24.992+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Factort Method Pattern'/><category scheme='http://www.blogger.com/atom/ns#' term='Factory Method'/><category scheme='http://www.blogger.com/atom/ns#' term='Design pattern'/><title type='text'>Factory Method Pattern</title><content type='html'>&lt;script src='http://ss.textcube.com/service/blog/script/blogger.js' type='text/javascript'&gt;&lt;/script&gt;&lt;P&gt;&lt;STRONG&gt;Factory Method Pattern ?&lt;/STRONG&gt;&lt;/P&gt;&lt;DIV style="BORDER-BOTTOM: #b2e8ed 1px solid; BORDER-LEFT: #b2e8ed 1px solid; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #e1fdff; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #b2e8ed 1px solid; BORDER-RIGHT: #b2e8ed 1px solid; PADDING-TOP: 10px"&gt;&lt;STRONG&gt;▪ &lt;/STRONG&gt;인스턴스를 생성하는 공장을 Template Method 패턴으로 구성한 것이 Factory Method 패턴&lt;br /&gt;&lt;STRONG&gt;▪ &lt;/STRONG&gt;구체적인 내용은 모두 하위 클래스 측에서 수행( 인스턴스를 만드는 방법을 상위 클래스 측에서 &lt;br /&gt;&amp;nbsp;&amp;nbsp; 결정하지만 구체적인 클래스 이름까지는 결정하지 않음)&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp;☞ 인스턴스 생성을 위한 골격과 실제 인스턴스 생성의 클래스를 분리해서 생각할수 있음&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Factory Method Pattern의 클래스 다이어그램&lt;/STRONG&gt;&lt;/P&gt;&lt;DIV style="BORDER-BOTTOM: #b2e8ed 1px solid; BORDER-LEFT: #b2e8ed 1px solid; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #e1fdff; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #b2e8ed 1px solid; BORDER-RIGHT: #b2e8ed 1px solid; PADDING-TOP: 10px"&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XCyIH8EB95.jpg" style="width:530px;height:415px;" alt="" onclick="TC$PRIV_open_img('http://ss.textcube.com/blog/1/10879/attach/XCyIH8EB95.jpg')" /&gt;&lt;/div&gt; &lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;비지오에서는 위와 같은 모습으로 보이는것이 안되어서.. 어쩔수없이 파워포인트로 수작업하였다...&lt;/P&gt;&lt;/DIV&gt;&lt;P&gt;&lt;br /&gt;&lt;STRONG&gt;예제프로그램&lt;/STRONG&gt;&lt;/P&gt;&lt;DIV style="BORDER-BOTTOM: #b2e8ed 1px solid; BORDER-LEFT: #b2e8ed 1px solid; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #e1fdff; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #b2e8ed 1px solid; BORDER-RIGHT: #b2e8ed 1px solid; PADDING-TOP: 10px"&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/Xe8kvrGVu5.jpg" style="width:543px;height:449px;" alt="" onclick="TC$PRIV_open_img('http://ss.textcube.com/blog/1/10879/attach/Xe8kvrGVu5.jpg')" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XGiFpcm6b1.jpg" style="width:546px;height:147px;" alt="" onclick="TC$PRIV_open_img('http://ss.textcube.com/blog/1/10879/attach/XGiFpcm6b1.jpg')" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;STRONG&gt;Product 클래스&lt;br /&gt;&lt;/STRONG&gt;: framework 패키지의 Product클래스는 '제품'을 표현한 클래스 입니다. 이 클래스에서는 추상 메소드 use만이 선언되어 있습니다. 구체적인 use의 구현은 모두 하위 클래스에게 맡기고 있습니다.&lt;br /&gt;&lt;p id="more-82-0" class="moreless_fold" style="color: #000000; padding: 0 0 0 10px;"&gt;&lt;span style="cursor: pointer;" onclick="if (window.TC$PRIV_toggleMoreLessBlogger != undefined) {TC$PRIV_toggleMoreLessBlogger(this, '82-0','펼쳐두기..','접어두기..'); return false;} else {document.getElementById('content-82-0').style.display='';}"&gt;      펼쳐두기..&lt;/span&gt;&lt;/p&gt;  &lt;div id="content-82-0" class="moreless_content" style="display: none; border: 1px dashed #cccccc; background-color: #f3f3f3; margin: 0 10px padding: 5px;"&gt;using System;&lt;br /&gt;using System.Collections.Generic;&lt;br /&gt;using System.Linq;&lt;br /&gt;using System.Text;&lt;br /&gt;namespace Factory_Method_Pattern.framework&lt;br /&gt;{&lt;br /&gt;&amp;nbsp; &amp;nbsp; public abstract class Product &lt;br /&gt;&amp;nbsp; &amp;nbsp; {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public abstract void use();&lt;br /&gt;&amp;nbsp; &amp;nbsp; }&lt;br /&gt;}&lt;/DIV&gt;&lt;br /&gt;&lt;br /&gt;&lt;STRONG&gt;Factory 클래스&lt;br /&gt;&lt;/STRONG&gt;: framework 패키지의 Factory클래스에서는 Template Method 패턴이 사용되고 있습니다. 추상 메소드 createProduct에서는 제품을 만들고, 만든 제품을 추상 메소드 registerProduct에서 등록합니다. &lt;br /&gt;제품을 만들고, 등록하는 구현은 하위 클래스에서 수행합니다. 이 framework에서 공장이란 create메소드에서 Product의 인스턴스를 생성하는 것으로 규정하고 있습니다. 그리고 create 메소드는 createProduct에서 제품을 만들어서 registerProduct에서 등록한다 라는 순서로 구현되고 있습니다.&lt;br /&gt;&lt;p id="more-82-1" class="moreless_fold" style="color: #000000; padding: 0 0 0 10px;"&gt;&lt;span style="cursor: pointer;" onclick="if (window.TC$PRIV_toggleMoreLessBlogger != undefined) {TC$PRIV_toggleMoreLessBlogger(this, '82-1','펼쳐두기..','접어두기..'); return false;} else {document.getElementById('content-82-1').style.display='';}"&gt;      펼쳐두기..&lt;/span&gt;&lt;/p&gt;  &lt;div id="content-82-1" class="moreless_content" style="display: none; border: 1px dashed #cccccc; background-color: #f3f3f3; margin: 0 10px padding: 5px;"&gt;using System;&lt;br /&gt;using System.Collections.Generic;&lt;br /&gt;using System.Linq;&lt;br /&gt;using System.Text;&lt;br /&gt;namespace Factory_Method_Pattern.framework&lt;br /&gt;{&lt;br /&gt;&amp;nbsp; &amp;nbsp; public abstract class Factory {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public Product create(String owner)&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Product p = createProduct(owner);&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; registerProduct(p);&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return p;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; protected abstract Product createProduct(String owner);&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; protected abstract void registerProduct(Product product);&lt;br /&gt;&amp;nbsp; &amp;nbsp; }&lt;br /&gt;}&lt;/DIV&gt;&lt;br /&gt;&lt;STRONG&gt;IDCard클래스&lt;br /&gt;&lt;/STRONG&gt;: IDCard클래스를 제품 product 클래스의 하위클래스로 정의합니다.&lt;br /&gt;&lt;p id="more-82-2" class="moreless_fold" style="color: #000000; padding: 0 0 0 10px;"&gt;&lt;span style="cursor: pointer;" onclick="if (window.TC$PRIV_toggleMoreLessBlogger != undefined) {TC$PRIV_toggleMoreLessBlogger(this, '82-2','펼쳐두기..','접어두기..'); return false;} else {document.getElementById('content-82-2').style.display='';}"&gt;      펼쳐두기..&lt;/span&gt;&lt;/p&gt;  &lt;div id="content-82-2" class="moreless_content" style="display: none; border: 1px dashed #cccccc; background-color: #f3f3f3; margin: 0 10px padding: 5px;"&gt;using System;&lt;br /&gt;using System.Collections.Generic;&lt;br /&gt;using System.Linq;&lt;br /&gt;using System.Text;&lt;br /&gt;using Factory_Method_Pattern.framework;&lt;br /&gt;namespace Factory_Method_Pattern.idcard&lt;br /&gt;{&lt;br /&gt;&amp;nbsp; &amp;nbsp; public class IDCard : Product &lt;br /&gt;&amp;nbsp; &amp;nbsp; {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; private string owner;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public IDCard (string owner) &lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Console.WriteLine(owner + "의 카드를 만듭니다.");&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.owner = owner;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public override void use() {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Console.WriteLine(owner + "의 카드를 만듭니다.");&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public String getOwner() {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return owner;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp; &amp;nbsp; }&lt;br /&gt;}&lt;/DIV&gt;&lt;br /&gt;&lt;br /&gt;&lt;STRONG&gt;IDCardFactory&lt;br /&gt;&lt;/STRONG&gt;: createProduct 와 registerProduct의 두가지 메소드를 구현하고 있습니다.&lt;br /&gt;&lt;p id="more-82-3" class="moreless_fold" style="color: #000000; padding: 0 0 0 10px;"&gt;&lt;span style="cursor: pointer;" onclick="if (window.TC$PRIV_toggleMoreLessBlogger != undefined) {TC$PRIV_toggleMoreLessBlogger(this, '82-3','펼쳐두기..','접어두기..'); return false;} else {document.getElementById('content-82-3').style.display='';}"&gt;      펼쳐두기..&lt;/span&gt;&lt;/p&gt;  &lt;div id="content-82-3" class="moreless_content" style="display: none; border: 1px dashed #cccccc; background-color: #f3f3f3; margin: 0 10px padding: 5px;"&gt;using System;&lt;br /&gt;using System.Collections.Generic;&lt;br /&gt;using System.Linq;&lt;br /&gt;using System.Text;&lt;br /&gt;using Factory_Method_Pattern.framework;&lt;br /&gt;namespace Factory_Method_Pattern.idcard&lt;br /&gt;{&lt;br /&gt;&amp;nbsp; &amp;nbsp; public class IDCardFactory : Factory&lt;br /&gt;&amp;nbsp; &amp;nbsp; {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; private List&amp;lt;string&amp;gt; owners = new List&amp;lt;string&amp;gt;();&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; protected override Product createProduct(String owner)&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return new IDCard(owner);&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; protected override void registerProduct(Product product)&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; owners.Add(((IDCard)product).getOwner());&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public List&amp;lt;string&amp;gt; getOwners()&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return owners;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp; &amp;nbsp; }&lt;br /&gt;}&lt;/DIV&gt;&lt;br /&gt;&lt;br /&gt;&lt;STRONG&gt;Main클래스&lt;br /&gt;&lt;/STRONG&gt;: 실제의 IDCard를 만들어서 사용해보겠습니다.&lt;br /&gt;&lt;p id="more-82-4" class="moreless_fold" style="color: #000000; padding: 0 0 0 10px;"&gt;&lt;span style="cursor: pointer;" onclick="if (window.TC$PRIV_toggleMoreLessBlogger != undefined) {TC$PRIV_toggleMoreLessBlogger(this, '82-4','펼쳐두기..','접어두기..'); return false;} else {document.getElementById('content-82-4').style.display='';}"&gt;      펼쳐두기..&lt;/span&gt;&lt;/p&gt;  &lt;div id="content-82-4" class="moreless_content" style="display: none; border: 1px dashed #cccccc; background-color: #f3f3f3; margin: 0 10px padding: 5px;"&gt;using System;&lt;br /&gt;using System.Collections.Generic;&lt;br /&gt;using System.Linq;&lt;br /&gt;using System.Text;&lt;br /&gt;using Factory_Method_Pattern.framework;&lt;br /&gt;using Factory_Method_Pattern.idcard;&lt;br /&gt;namespace Factory_Method_Pattern&lt;br /&gt;{&lt;br /&gt;&amp;nbsp; &amp;nbsp; class Program&lt;br /&gt;&amp;nbsp; &amp;nbsp; {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; static void Main(string[] args)&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Factory factory = new IDCardFactory();&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Product card1 = factory.create("홍길동");&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Product card2 = factory.create("이순신");&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Product card3 = factory.create("강감찬");&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; card1.use();&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; card2.use();&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; card3.use();&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp; &amp;nbsp; }&lt;br /&gt;}&lt;/DIV&gt;&lt;br /&gt;위의 예제 소스는 C#으로 되어있습니다 자바를 원하시는 분은 이전에 올린 소스파일을 참고하시기 바랍니다.&lt;br /&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;a href="http://ss.textcube.com/blog/1/10879/attach/XDKnadAana.alz/Factory%20Method%28C%23%29.alz" rel="enclosure" &gt;&lt;img src="http://ss.textcube.com/service/blog/image/extension/unknown.gif" alt="" style="vertical-align: middle;" /&gt; Factory Method(C#).alz&lt;/a&gt;&lt;/div&gt;&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;출처 : JAVA 언어로 배우는 디자인 패턴 입문(영진닷컴)&lt;/P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2357933784790449713-4015195759083409207?l=akangels-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akangels-textcube.blogspot.com/feeds/4015195759083409207/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://akangels-textcube.blogspot.com/2009/10/factory-method-pattern.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/4015195759083409207'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/4015195759083409207'/><link rel='alternate' type='text/html' href='http://akangels-textcube.blogspot.com/2009/10/factory-method-pattern.html' title='Factory Method Pattern'/><author><name>아크엔젤스</name><uri>http://www.blogger.com/profile/10209348568937169243</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2357933784790449713.post-6203256038151133809</id><published>2009-10-05T12:45:00.000+09:00</published><updated>2011-01-29T19:57:24.842+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Design pattern'/><title type='text'>Java 언어로 배우는 디자인 패턴 입문(소스파일)</title><content type='html'>&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;포스팅 할때마다 자바 소스파일을 올리는것이 귀차나서.. 그냥 이렇게 한번에 올립니다;;;;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;이 파일은 JAVA언어로 배우는 디자인 패턴 입문 책에서 제공하는 파일입니다.(영진닷컴)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;앞으로 C#에 대한 소스만.. 올리도록 하겠습니다..&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;출처 :&amp;nbsp; Java 언어로 배우는 디자인 패턴(개정판) // 영진닷컴&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;a href="http://ss.textcube.com/blog/1/10879/attach/XQmweaVwtx.alz/src.alz" rel="enclosure" &gt;&lt;img src="http://ss.textcube.com/service/blog/image/extension/unknown.gif" alt="" style="vertical-align: middle;" /&gt; src.alz&lt;/a&gt;&lt;/div&gt;&lt;/P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2357933784790449713-6203256038151133809?l=akangels-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akangels-textcube.blogspot.com/feeds/6203256038151133809/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://akangels-textcube.blogspot.com/2009/10/java-%EC%96%B8%EC%96%B4%EB%A1%9C-%EB%B0%B0%EC%9A%B0%EB%8A%94-%EB%94%94%EC%9E%90%EC%9D%B8-%ED%8C%A8%ED%84%B4-%EC%9E%85%EB%AC%B8%EC%86%8C%EC%8A%A4%ED%8C%8C%EC%9D%BC.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/6203256038151133809'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/6203256038151133809'/><link rel='alternate' type='text/html' href='http://akangels-textcube.blogspot.com/2009/10/java-%EC%96%B8%EC%96%B4%EB%A1%9C-%EB%B0%B0%EC%9A%B0%EB%8A%94-%EB%94%94%EC%9E%90%EC%9D%B8-%ED%8C%A8%ED%84%B4-%EC%9E%85%EB%AC%B8%EC%86%8C%EC%8A%A4%ED%8C%8C%EC%9D%BC.html' title='Java 언어로 배우는 디자인 패턴 입문(소스파일)'/><author><name>아크엔젤스</name><uri>http://www.blogger.com/profile/10209348568937169243</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2357933784790449713.post-1947636214818578242</id><published>2009-10-01T13:50:00.000+09:00</published><updated>2011-01-29T19:57:24.693+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Pattern'/><category scheme='http://www.blogger.com/atom/ns#' term='템플릿 메소드 패턴'/><category scheme='http://www.blogger.com/atom/ns#' term='Template Method'/><category scheme='http://www.blogger.com/atom/ns#' term='template'/><category scheme='http://www.blogger.com/atom/ns#' term='Template Method Pattern'/><category scheme='http://www.blogger.com/atom/ns#' term='Design pattern'/><title type='text'>Template Method Pattern</title><content type='html'>&lt;script src='http://ss.textcube.com/service/blog/script/blogger.js' type='text/javascript'&gt;&lt;/script&gt;&lt;P dir=ltr&gt;&lt;br /&gt;템플릿 메소드 패턴을 알아보기 전에 일단 템플릿이란 먼지 알아보겠습니다.&lt;/P&gt;&lt;P&gt;그럼.. &lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;템플릿이란????&lt;/STRONG&gt;&lt;/P&gt;&lt;DIV style="BORDER-BOTTOM: #b2e8ed 1px solid; BORDER-LEFT: #b2e8ed 1px solid; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #e1fdff; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #b2e8ed 1px solid; BORDER-RIGHT: #b2e8ed 1px solid; PADDING-TOP: 10px"&gt;예를 들자면 문자 모양으로 구멍이 뚫려있는 프라스틱 판을 말합니다. 어릴적 사각형의 자중에 동그라미, 사각형, 별모양 등의 모양으로 구멍이 뚫려있는 프라스틱 판을 보았을겁니다. 바로 그것을 말합니다. &lt;P&gt;템플릿의 구멍을 보면 어떤 모양의 문자인지는 알 수 있지만 실제로 어떤 문자가 될지는 필기구에 의해 결정됩니다. 펜을 사용하면 펜, 연필을 사용하면 연필로 쓴 문자가 됩니다. 그러나 어떤 필기구를 사용해도 쓰여진 문자는 템플릿 구멍의 형태와 동일합니다.&lt;/P&gt;&lt;/DIV&gt;&lt;P&gt;&lt;br /&gt;&lt;STRONG&gt;Template Method Pattern?&lt;/STRONG&gt;&lt;/P&gt;&lt;DIV style="BORDER-BOTTOM: #b2e8ed 1px solid; BORDER-LEFT: #b2e8ed 1px solid; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #e1fdff; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #b2e8ed 1px solid; BORDER-RIGHT: #b2e8ed 1px solid; PADDING-TOP: 10px"&gt;&lt;P&gt;• 상위 클래스 : 템플릿에 해당하는 메소드가 정의(추상 메소드)&lt;/P&gt;&lt;P&gt;• 하위 클래스 : 추상 메소드의 구현&lt;/P&gt;&lt;P style="MARGIN-RIGHT: 0px"&gt;&amp;nbsp; ☞ &lt;FONT color=#338000&gt;상위 클래스에서는 뼈대를 결정하고, 하위 클래스에서 그 구체적인 내용을 결정하는 디자인 패턴&lt;/FONT&gt;&lt;/P&gt;&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;DIV style="BORDER-BOTTOM: #b2e8ed 1px solid; BORDER-LEFT: #b2e8ed 1px solid; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #e1fdff; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #b2e8ed 1px solid; BORDER-RIGHT: #b2e8ed 1px solid; PADDING-TOP: 10px"&gt;&lt;P style="MARGIN-RIGHT: 0px" align=center&gt;&lt;STRONG&gt;Template Method 클래스 다이어그램&lt;/STRONG&gt;&lt;/P&gt;&lt;P style="MARGIN-RIGHT: 0px"&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XV4FmUmJUi.jpg" style="width:102px;height:218px;" alt=""  /&gt;&lt;/div&gt;&lt;/P&gt;&lt;P style="MARGIN-RIGHT: 0px"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="MARGIN-RIGHT: 0px"&gt;- AbstractClass(추상클래스)&lt;/P&gt;&lt;P style="MARGIN-RIGHT: 0px"&gt;&amp;nbsp;&amp;nbsp; : 추상 메소드 선언, 하위 클래스인 ConcreteClass 역할에 의해 구현 &lt;/P&gt;&lt;P&gt;- ConcreteClass(구현 클래스)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; : 추상 메소드를 구체적으로 구현, AbstractClass역의 템플릿 메소드에서 호출&lt;/P&gt;&lt;P style="MARGIN-RIGHT: 0px"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Template Method 패턴 특징(?) 알아두어야 할사항(?)&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;- 로직의 공통화&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; : 상위 클래스의 템플릿메소드에서 알고리즘이 기술되어 있으므로, 하위 클래스측에서는 알고리즘을 일일이 기술할 필요가 없습니다. 예를 들어 템플릿 메소드 패턴을 사용하지 않고 에디터의 복사 &amp;amp; 붙여넣기 기능을 사용해서 복수의 ConcreteClass 역할을 만들었다고 가정합시다.&lt;/P&gt;&lt;P&gt;ConcreteClass1, 2,3 ... 은 모두 비슷하지만 다른 클래스가 됩니다. 작성한 직후에는 괜찮지만 나중에 1에 버그가 발견되면 대체 어떻게 될까요? 1개의 버그를 수정하기 위해 모든 ConcreteClass를 수정해야 됩니다. 그런점에ㅓ Template Method 패턴으로 프로그래밍 하면 템플릿 메소드에 오류가 발견되더라도 템플릿 메소드만 수정하면 됩니다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;- 상위 클래스와 하위 클래스의 연계&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp;: 템플릿 메소드 패턴에서는 상위 클래스와 하위 클래스가 긴밀하게 연락을 취하며 작동하고 있습니다. 따라서 상위 클래스에서 선언된 추상 메소드를 실제로 하우 ㅣ클래스에서 구현할 때에는 그 메소드가 어느 타이밍에서 호출되는지 이해해야 합니다. 상위 클래스의 소스 프로그램이 없으면 하위 클래스의 구현이 어려울 수도 있습니다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;- 하위 클래스를 상위 클래스와 동일시&lt;/P&gt;&lt;P style="MARGIN-RIGHT: 0px"&gt;&amp;nbsp;&amp;nbsp; : "상위 클래스형의 변수에 하위 클래스의 어떠한 인스턴스를 대입해도 제대로 작동할 수 있도록 한다" 는 원칙은 LSP라고 불립니다. 이 LSP는 Template Method 패턴에 국한되지 않는 상속의 일반적인 원칙&lt;br /&gt;&lt;/P&gt;&lt;/DIV&gt;&lt;P&gt;&lt;br /&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="MARGIN-RIGHT: 0px"&gt;&lt;STRONG&gt;예제 프로그램&lt;/STRONG&gt;&lt;/P&gt;&lt;P style="MARGIN-RIGHT: 0px"&gt;&amp;nbsp;- 문자나 문자열을 5회 반복하기&lt;/P&gt;&lt;DIV style="BORDER-BOTTOM: #b2e8ed 1px solid; BORDER-LEFT: #b2e8ed 1px solid; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #e1fdff; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #b2e8ed 1px solid; BORDER-RIGHT: #b2e8ed 1px solid; PADDING-TOP: 10px"&gt;&lt;P style="MARGIN-RIGHT: 0px"&gt;&amp;nbsp;클래스 일람&lt;/P&gt;&lt;TABLE style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; WIDTH: 525px; HEIGHT: 130px; BORDER-TOP: medium none; BORDER-RIGHT: medium none" cellSpacing=1 cellPadding=0 bgColor=#aaaaaa align=center&gt;&lt;TBODY&gt;&lt;TR bgColor=#ffffff&gt;&lt;TD width=135&gt;&amp;nbsp;이름&lt;/TD&gt;&lt;TD width=135&gt;&amp;nbsp;해설 &lt;/TD&gt;&lt;/TR&gt;&lt;TR bgColor=#ffffff&gt;&lt;TD width=135&gt;&amp;nbsp;AbstractDisplay&lt;/TD&gt;&lt;TD width=135&gt;&amp;nbsp;메소드 display만 구현되고 있는 추상클래스 &lt;/TD&gt;&lt;/TR&gt;&lt;TR bgColor=#ffffff&gt;&lt;TD width=135&gt;&amp;nbsp;Chardisplay&lt;/TD&gt;&lt;TD width=135&gt;&lt;P&gt;&amp;nbsp;메소드 open, print, close를 구현하고 있는 &lt;/P&gt;&lt;P&gt;&amp;nbsp;클래스&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR bgColor=#ffffff&gt;&lt;TD width=135&gt;&amp;nbsp;StringDisplay&lt;/TD&gt;&lt;TD width=135&gt;&lt;P align=center&gt;&amp;nbsp;"&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR bgColor=#ffffff&gt;&lt;TD width=135&gt;&amp;nbsp;Main&lt;/TD&gt;&lt;TD width=135&gt;&amp;nbsp;동작 테스트용 클레스&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P style="MARGIN-RIGHT: 0px"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="MARGIN-RIGHT: 0px" align=center&gt;예제 프로그램의 클래스 다이어그램&lt;/P&gt;&lt;P style="MARGIN-RIGHT: 0px"&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/Xe8VHlzlGu.jpg" style="width:258px;height:261px;" alt=""  /&gt;&lt;/div&gt;&lt;/P&gt;&lt;/DIV&gt;&lt;P style="MARGIN-RIGHT: 0px"&gt;&lt;br /&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="MARGIN-RIGHT: 0px"&gt;&lt;STRONG&gt;AbstractDisplay 클래스&lt;/STRONG&gt;&lt;/P&gt;&lt;DIV style="BORDER-BOTTOM: #b2e8ed 1px solid; BORDER-LEFT: #b2e8ed 1px solid; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #e1fdff; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #b2e8ed 1px solid; BORDER-RIGHT: #b2e8ed 1px solid; PADDING-TOP: 10px"&gt;&lt;P&gt;• open 메소드 호출&lt;/P&gt;&lt;P&gt;• print 메소드를 5회 호출&lt;/P&gt;&lt;P&gt;• close 메소드 호출&lt;/P&gt;&lt;p id="more-80-0" class="moreless_fold" style="color: #000000; padding: 0 0 0 10px;"&gt;&lt;span style="cursor: pointer;" onclick="if (window.TC$PRIV_toggleMoreLessBlogger != undefined) {TC$PRIV_toggleMoreLessBlogger(this, '80-0','펼쳐두기..','접어두기..'); return false;} else {document.getElementById('content-80-0').style.display='';}"&gt;      펼쳐두기..&lt;/span&gt;&lt;/p&gt;  &lt;div id="content-80-0" class="moreless_content" style="display: none; border: 1px dashed #cccccc; background-color: #f3f3f3; margin: 0 10px padding: 5px;"&gt;public abstract class AbstractDisplay {&lt;FONT color=#38cc1a&gt; // 추상 클래스 AbstractDisplay&lt;br /&gt;&lt;/FONT&gt;&amp;nbsp; &amp;nbsp; public abstract void open(); &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;FONT color=#38cc1a&gt;// 하위 클래스에 구현을 맡기는 추상메소드(1) open&lt;/FONT&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; public abstract void print(); &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;FONT color=#38cc1a&gt; // 하위 클래스에 구현을 맡기는 추상메소드(2) print&lt;br /&gt;&lt;/FONT&gt;&amp;nbsp; &amp;nbsp; public abstract void close(); &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;FONT color=#38cc1a&gt; // 하위 클래스에 구현을 맡기는 추상메소드(3) close&lt;br /&gt;&lt;/FONT&gt;&amp;nbsp; &amp;nbsp; public final void display() { &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;FONT color=#38cc1a&gt;// 추상 클래스에서 구현하고 있는 메소드 display&lt;/FONT&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; open(); &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;FONT color=#38cc1a&gt; // 우선 open하고...&lt;/FONT&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for (int i = 0; i &amp;lt; 5; i++) { &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;FONT color=#38cc1a&gt;// 5번print를 반복하고...&lt;br /&gt;&lt;/FONT&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; print(); &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; close(); &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;FONT color=#38cc1a&gt;// 마지막으로 close한다. 이것이 display 메소드에서 구현되어 있는 내용&lt;/FONT&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; }&lt;br /&gt;}&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/DIV&gt;&lt;P style="MARGIN-RIGHT: 0px"&gt;&lt;br /&gt;&lt;br /&gt;&lt;STRONG&gt;CharDisplay 클래스&lt;/STRONG&gt;&lt;/P&gt;&lt;DIV style="BORDER-BOTTOM: #b2e8ed 1px solid; BORDER-LEFT: #b2e8ed 1px solid; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #e1fdff; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #b2e8ed 1px solid; BORDER-RIGHT: #b2e8ed 1px solid; PADDING-TOP: 10px"&gt;&lt;P align=center&gt;&amp;nbsp;CharDispaly 클래스의 open, print, close&amp;nbsp; 메소드 처리&lt;/P&gt;&lt;TABLE style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; WIDTH: 450px; HEIGHT: 40px; BORDER-TOP: medium none; BORDER-RIGHT: medium none" cellSpacing=1 cellPadding=0 bgColor=#aaaaaa align=center&gt;&lt;TBODY&gt;&lt;TR bgColor=#ffffff&gt;&lt;TD width=135&gt;&amp;nbsp;메소드 이름&lt;/TD&gt;&lt;TD width=135&gt;&amp;nbsp;처리 &lt;/TD&gt;&lt;/TR&gt;&lt;TR bgColor=#ffffff&gt;&lt;TD width=135&gt;&amp;nbsp;open&lt;/TD&gt;&lt;TD width=135&gt;&amp;nbsp;문자열 "&amp;lt;&amp;lt;" 표시 &lt;/TD&gt;&lt;/TR&gt;&lt;TR bgColor=#ffffff&gt;&lt;TD width=135&gt;&amp;nbsp;print&lt;/TD&gt;&lt;TD width=135&gt;&amp;nbsp;생성자에서 주어진 1문자를 표시&lt;/TD&gt;&lt;/TR&gt;&lt;TR bgColor=#ffffff&gt;&lt;TD width=135&gt;&amp;nbsp;close&lt;/TD&gt;&lt;TD width=135&gt;&amp;nbsp;문자열 "&amp;gt;&amp;gt;" 표시&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;p id="more-80-1" class="moreless_fold" style="color: #000000; padding: 0 0 0 10px;"&gt;&lt;span style="cursor: pointer;" onclick="if (window.TC$PRIV_toggleMoreLessBlogger != undefined) {TC$PRIV_toggleMoreLessBlogger(this, '80-1','펼쳐두기..','접어두기..'); return false;} else {document.getElementById('content-80-1').style.display='';}"&gt;      펼쳐두기..&lt;/span&gt;&lt;/p&gt;  &lt;div id="content-80-1" class="moreless_content" style="display: none; border: 1px dashed #cccccc; background-color: #f3f3f3; margin: 0 10px padding: 5px;"&gt;public class CharDisplay extends AbstractDisplay // 하위 클래스&lt;br /&gt;{ &amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; private char ch; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;FONT color=#38cc1a&gt;// 표시해야 할 문자&lt;/FONT&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; public CharDisplay(char ch) { &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;FONT color=#38cc1a&gt;&amp;nbsp; // 생성자에서 넘어온 문자ch를&lt;br /&gt;&lt;/FONT&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.ch = ch; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;FONT color=#38cc1a&gt;&amp;nbsp; // 필드에 기억해 둔다.&lt;br /&gt;&lt;/FONT&gt;&amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp; &amp;nbsp; public void open() { &amp;nbsp;&amp;nbsp; &lt;FONT color=#38cc1a&gt;// 상위 클래스에서는 추상메소드였다. 여기서 오버라이드 해서 구현&lt;br /&gt;&lt;/FONT&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; System.out.print("&amp;lt;&amp;lt;"); &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;FONT color=#38cc1a&gt;// 시작 문자열로서 "&amp;lt;&amp;lt;"를 표시한다.&lt;br /&gt;&lt;/FONT&gt;&amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp; &amp;nbsp; public void print() { &lt;FONT color=#38cc1a&gt;// print메소드로 여기서 구현한다. 이것이 display에서 반복해서 호출됨&lt;/FONT&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; System.out.print(ch); &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;FONT color=#38cc1a&gt; // 필드에 기억해둔 문자 1개를 표시&lt;br /&gt;&lt;/FONT&gt;&amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp; &amp;nbsp; public void close() { &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;FONT color=#38cc1a&gt;&amp;nbsp; // close메소드도 여기서 구현&lt;br /&gt;&lt;/FONT&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; System.out.println("&amp;gt;&amp;gt;"); &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;FONT color=#38cc1a&gt; // 종료문자열 "&amp;gt;&amp;gt;"를 표시.&lt;br /&gt;&lt;/FONT&gt;&amp;nbsp; &amp;nbsp; }&lt;br /&gt;}&lt;/DIV&gt;&lt;/DIV&gt;&lt;P align=left&gt;&lt;br /&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="MARGIN-RIGHT: 0px"&gt;&lt;br /&gt;&lt;br /&gt;&lt;STRONG&gt;StringDisplay 클래스&lt;/STRONG&gt;&lt;br /&gt;&lt;/P&gt;&lt;DIV style="BORDER-BOTTOM: #b2e8ed 1px solid; BORDER-LEFT: #b2e8ed 1px solid; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #e1fdff; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #b2e8ed 1px solid; BORDER-RIGHT: #b2e8ed 1px solid; PADDING-TOP: 10px"&gt;&lt;p id="more-80-2" class="moreless_fold" style="color: #000000; padding: 0 0 0 10px;"&gt;&lt;span style="cursor: pointer;" onclick="if (window.TC$PRIV_toggleMoreLessBlogger != undefined) {TC$PRIV_toggleMoreLessBlogger(this, '80-2','펼쳐두기..','접어두기..'); return false;} else {document.getElementById('content-80-2').style.display='';}"&gt;      펼쳐두기..&lt;/span&gt;&lt;/p&gt;  &lt;div id="content-80-2" class="moreless_content" style="display: none; border: 1px dashed #cccccc; background-color: #f3f3f3; margin: 0 10px padding: 5px;"&gt;public class StringDisplay extends AbstractDisplay { &amp;nbsp;&amp;nbsp; &lt;FONT color=#38cc1a&gt;// StringDisplay도 AbstractDisplay의 하위 클래스&lt;br /&gt;&lt;/FONT&gt;&amp;nbsp; &amp;nbsp; private String string; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;FONT color=#38cc1a&gt;// 표시해야 할 문자열&lt;br /&gt;&lt;/FONT&gt;&amp;nbsp; &amp;nbsp; private int width; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;FONT color=#38cc1a&gt;// 바이트 단위로 계산한 문자열의 폭&lt;br /&gt;&lt;/FONT&gt;&amp;nbsp; &amp;nbsp; public StringDisplay(String string) { &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;FONT color=#38cc1a&gt;// 생성자에서 넘어온 문자열 string을&lt;br /&gt;&lt;/FONT&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.string = string; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;FONT color=#38cc1a&gt;&amp;nbsp; // 필드에 기억&lt;br /&gt;&lt;/FONT&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.width = string.getBytes().length; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;FONT color=#38cc1a&gt;// 그리고 바이트 단위의 폭도 필드에 기억해 두고 나중에 사용한다.&lt;br /&gt;&lt;/FONT&gt;&amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp; &amp;nbsp; public void open() { &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;FONT color=#38cc1a&gt;&amp;nbsp; // 오버라이드해서 정의한 open메소드&lt;br /&gt;&lt;/FONT&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; printLine(); &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;FONT color=#38cc1a&gt;&amp;nbsp; // 이 클래스의 메소드 printLine에서 선을 그리고 있다.&lt;br /&gt;&lt;/FONT&gt;&amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp; &amp;nbsp; public void print() { &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;FONT color=#38cc1a&gt; // print메소드는&lt;br /&gt;&lt;/FONT&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; System.out.println("|" + string + "|"); &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;FONT color=#38cc1a&gt;// 필드에 기억해 둔 문자열의 전후에 "|"를 붙여서 표시.&lt;br /&gt;&lt;/FONT&gt;&amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp; &amp;nbsp; public void close() { &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;FONT color=#38cc1a&gt;&amp;nbsp; &amp;nbsp; // close메소드는 &lt;br /&gt;&lt;/FONT&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; printLine(); &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;FONT color=#38cc1a&gt;&amp;nbsp;&amp;nbsp; // open과 같이 printLine메소드에서 선을 그리고 있다.&lt;br /&gt;&amp;nbsp; &amp;nbsp; &lt;/FONT&gt;}&lt;br /&gt;&amp;nbsp; &amp;nbsp; private void printLine() { &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;FONT color=#38cc1a&gt;// open과 close로부터 호출되는 printLine메소드다 private이기 때문에 이 클래스 내에서만 사용된다.&lt;br /&gt;&lt;/FONT&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; System.out.print("+"); &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;FONT color=#38cc1a&gt;// 사각틀의 모퉁이를 표현하는 "+"마크를 표시.&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/FONT&gt;for (int i = 0; i &amp;lt; width; i++) { &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;FONT color=#38cc1a&gt;&amp;nbsp; // width개의 "-"표시해서&lt;br /&gt;&lt;/FONT&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; System.out.print("-"); &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;FONT color=#38cc1a&gt;&amp;nbsp;&amp;nbsp; // 사각틀로서 이용한다.&lt;br /&gt;&lt;/FONT&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; System.out.println("+"); &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;FONT color=#38cc1a&gt;&amp;nbsp;&amp;nbsp; // 사각틀의 모퉁이를 표현하는 "+"마크를 표시&lt;br /&gt;&amp;nbsp; &amp;nbsp; &lt;/FONT&gt;}&lt;/DIV&gt;&lt;/DIV&gt;&lt;P style="MARGIN-RIGHT: 0px" class=moreless tt_lesstext="접어두기.." tt_moretext="펼쳐두기.." ttml="ttml"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="MARGIN-RIGHT: 0px"&gt;&lt;br /&gt;&lt;STRONG&gt;Main 클래스&lt;/STRONG&gt;&lt;/P&gt;&lt;DIV style="BORDER-BOTTOM: #b2e8ed 1px solid; BORDER-LEFT: #b2e8ed 1px solid; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #e1fdff; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #b2e8ed 1px solid; BORDER-RIGHT: #b2e8ed 1px solid; PADDING-TOP: 10px"&gt;&lt;p id="more-80-3" class="moreless_fold" style="color: #000000; padding: 0 0 0 10px;"&gt;&lt;span style="cursor: pointer;" onclick="if (window.TC$PRIV_toggleMoreLessBlogger != undefined) {TC$PRIV_toggleMoreLessBlogger(this, '80-3','펼쳐두기..','접어두기..'); return false;} else {document.getElementById('content-80-3').style.display='';}"&gt;      펼쳐두기..&lt;/span&gt;&lt;/p&gt;  &lt;div id="content-80-3" class="moreless_content" style="display: none; border: 1px dashed #cccccc; background-color: #f3f3f3; margin: 0 10px padding: 5px;"&gt;&lt;P class=moreless tt_lesstext="접어두기.." tt_moretext="펼쳐두기.." ttml="ttml"&gt;public class Main {&lt;br /&gt;&amp;nbsp; &amp;nbsp; public static void main(String[] args) {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; AbstractDisplay d1 = new CharDisplay('H'); &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;FONT color=#38cc1a&gt;&amp;nbsp;&amp;nbsp; // 'H'를 갖은 CharDisplay의 인스턴스를 1개 만든다.&lt;br /&gt;&lt;/FONT&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; AbstractDisplay d2 = new StringDisplay("Hello, world."); &amp;nbsp; &lt;FONT color=#38cc1a&gt;// "Hello, world."를 가진 StringDisplay의 인스턴스를 1개 만든다.&lt;br /&gt;&lt;/FONT&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; AbstractDisplay d3 = new StringDisplay("안녕하세요."); &amp;nbsp; &lt;FONT color=#38cc1a&gt;&amp;nbsp; // "안녕하세요"를 가진 StringDisplay의 인스턴스를 1개 만든다.&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/FONT&gt;d1.display(); &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;FONT color=#38cc1a&gt; // d1,d2,d3모두 같은 AbstractDisplay의 하위 클래스의 인스턴스이기 때문에&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/FONT&gt;d2.display(); &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;FONT color=#38cc1a&gt; // 상속한 display메소드를 호출할 수 있다.&lt;br /&gt;&lt;/FONT&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; d3.display(); &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;FONT color=#38cc1a&gt; // 실제의 동작은 각 클래스 CharDisplay나 StringDisplay에서 정한다.&lt;br /&gt;&lt;/FONT&gt;&amp;nbsp; &amp;nbsp; }&lt;br /&gt;}&lt;/P&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;P style="MARGIN-RIGHT: 0px" align=center&gt;&lt;br /&gt;&amp;nbsp;JAVA&lt;/P&gt;&lt;P style="MARGIN-RIGHT: 0px"&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;a href="http://ss.textcube.com/blog/1/10879/attach/XXEQ5agqOk.alz/Template%20Method.alz" rel="enclosure" &gt;&lt;img src="http://ss.textcube.com/service/blog/image/extension/unknown.gif" alt="" style="vertical-align: middle;" /&gt; Template Method.alz&lt;/a&gt;&lt;/div&gt;&lt;/P&gt;&lt;P style="MARGIN-RIGHT: 0px" align=center&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="MARGIN-RIGHT: 0px" align=center&gt;C#&lt;/P&gt;&lt;P style="MARGIN-RIGHT: 0px" align=center&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;a href="http://ss.textcube.com/blog/1/10879/attach/XaPynmEVeL.alz/Tempate%20Method%20Pattern.alz" rel="enclosure" &gt;&lt;img src="http://ss.textcube.com/service/blog/image/extension/unknown.gif" alt="" style="vertical-align: middle;" /&gt; Tempate Method Pattern.alz&lt;/a&gt;&lt;/div&gt;&lt;/P&gt;&lt;P style="MARGIN-RIGHT: 0px" align=center&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="MARGIN-RIGHT: 0px" align=left&gt;출처 : Java 언어로 배우는 디자인 패턴 입문(개정판) // 영진닷컴&lt;/P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2357933784790449713-1947636214818578242?l=akangels-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akangels-textcube.blogspot.com/feeds/1947636214818578242/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://akangels-textcube.blogspot.com/2009/10/template-method-pattern.html#comment-form' title='1개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/1947636214818578242'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/1947636214818578242'/><link rel='alternate' type='text/html' href='http://akangels-textcube.blogspot.com/2009/10/template-method-pattern.html' title='Template Method Pattern'/><author><name>아크엔젤스</name><uri>http://www.blogger.com/profile/10209348568937169243</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2357933784790449713.post-2001223284175843956</id><published>2009-09-29T12:27:00.000+09:00</published><updated>2011-01-29T19:57:24.590+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Wrapper Pattern'/><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Adapter Pattern'/><category scheme='http://www.blogger.com/atom/ns#' term='Design pattern'/><title type='text'>Adapter Pattern</title><content type='html'>&lt;script src='http://ss.textcube.com/service/blog/script/blogger.js' type='text/javascript'&gt;&lt;/script&gt;&lt;P&gt;&lt;STRONG&gt;&lt;br /&gt;- Adapter Pattern이란 무엇인가..&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;어댑터는 'adapt(개조) 시키는 것'이라는 의미입니다. 예를 들어 직류 12볼트로 작동하는 노트북을 교류 100볼트의 AC 전원에 연결한다고 가정하면 이때 우리는 AC 어댑터라는 장치를 사용합니다. AC 어댑터느 가정용 전원으로 제공되고 있는 교류 100볼트를 지금 필요한 직류 12볼트로 교환해줍니다. 제공되고 있는 것과 필요한 것 사이를 연결해주는 것이 어댑터의 역할입니다.&lt;/P&gt;&lt;P&gt;즉, AC 어댑터의 역할은 직류 12볼트의 컴퓨터를 교루 100볼트의 환경에 맞게 바꾸는 것입니다.&lt;/P&gt;&lt;P&gt;프로그램의 세계에서도 이미 제공되어 있는 것을 그대로 사용할 수 없을때, 필요한 형태로 교환하고 사용하는 일이 자주 있습니다. &lt;STRONG&gt;&lt;FONT color=#338000&gt;'이미 제공되고 있는 것' 과 '필요한 것' 사이의 '차이'를 없애주는 디자인 패턴이 Adapter Pattern 입니다.&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;위의 글을 책에서 읽었을때 처음 생각난것이 네트워크 시간에 배웠던 IPv4와 IPv6였다.. 후훗..;; 맞나 -0-&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;- Adapter Pattern에는 다음과 같이 두 가지의 종류가 있습니다.&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; 1. 클래스에 의한 Adapter 패턴(상속)&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; 2. 인스턴스에 의한 Adapter 패턴(위임)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;- 예제 프로그램을 만들어 보겠습니다.&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;주어진 문자열을 다음과 같이 표시하는 간단한 것입니다.&lt;/P&gt;&lt;p id="more-79-0" class="moreless_fold" style="color: #000000; padding: 0 0 0 10px;"&gt;&lt;span style="cursor: pointer;" onclick="if (window.TC$PRIV_toggleMoreLessBlogger != undefined) {TC$PRIV_toggleMoreLessBlogger(this, '79-0','펼쳐두기..','접어두기..'); return false;} else {document.getElementById('content-79-0').style.display='';}"&gt;      펼쳐두기..&lt;/span&gt;&lt;/p&gt;  &lt;div id="content-79-0" class="moreless_content" style="display: none; border: 1px dashed #cccccc; background-color: #f3f3f3; margin: 0 10px padding: 5px;"&gt;&lt;P&gt;(Hello)&lt;/P&gt;&lt;P&gt;*Hello*&lt;/P&gt;&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; WIDTH: 478px; HEIGHT: 89px; BORDER-TOP: medium none; BORDER-RIGHT: medium none" cellSpacing=1 cellPadding=0 bgColor=#aaaaaa align=center&gt;&lt;TBODY&gt;&lt;TR bgColor=#ffffff&gt;&lt;TD width=135&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD width=135&gt;&amp;nbsp;전원의 비유&lt;/TD&gt;&lt;TD width=135&gt;&amp;nbsp;예제 프로그램 &lt;/TD&gt;&lt;/TR&gt;&lt;TR bgColor=#ffffff&gt;&lt;TD width=135&gt;&amp;nbsp;제공되고 있는 것&lt;/TD&gt;&lt;TD width=135&gt;&amp;nbsp;교류 100볼트 &lt;/TD&gt;&lt;TD width=135&gt;&lt;P&gt;&amp;nbsp;Banner 클래스&lt;/P&gt;&lt;P&gt;&amp;nbsp;(showWithParen,showWithAster)&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR bgColor=#ffffff&gt;&lt;TD width=135&gt;&amp;nbsp;교환장치&lt;/TD&gt;&lt;TD width=135&gt;&amp;nbsp;어댑터&lt;/TD&gt;&lt;TD width=135&gt;&lt;P align=left&gt;&amp;nbsp;PrintBanner 클래스 &lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR bgColor=#ffffff&gt;&lt;TD width=135&gt;&amp;nbsp;필요한 것&lt;/TD&gt;&lt;TD width=135&gt;&amp;nbsp;직류 12볼트&lt;/TD&gt;&lt;TD width=135&gt;&lt;P&gt;&amp;nbsp;Print 인터페이스&lt;/P&gt;&lt;P&gt;&amp;nbsp;(printWeak, printStrong)&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;br /&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XFEqPODoqn.jpg" style="width:320px;height:144px;" alt=""  /&gt;&lt;/div&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Banner 클래스&lt;/P&gt;&lt;P&gt;: 미리 제공되어 있는 클래스라고 가정&lt;/P&gt;&lt;p id="more-79-1" class="moreless_fold" style="color: #000000; padding: 0 0 0 10px;"&gt;&lt;span style="cursor: pointer;" onclick="if (window.TC$PRIV_toggleMoreLessBlogger != undefined) {TC$PRIV_toggleMoreLessBlogger(this, '79-1','펼쳐두기..','접어두기..'); return false;} else {document.getElementById('content-79-1').style.display='';}"&gt;      펼쳐두기..&lt;/span&gt;&lt;/p&gt;  &lt;div id="content-79-1" class="moreless_content" style="display: none; border: 1px dashed #cccccc; background-color: #f3f3f3; margin: 0 10px padding: 5px;"&gt;public class Banner {&lt;br /&gt;&amp;nbsp; &amp;nbsp; private String string;&lt;br /&gt;&amp;nbsp; &amp;nbsp; public Banner(String string) {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.string = string;&lt;br /&gt;&amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp; &amp;nbsp; public void showWithParen() {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; System.out.println("(" + string + ")");&lt;br /&gt;&amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp; &amp;nbsp; public void showWithAster() {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; System.out.println("*" + string + "*");&lt;br /&gt;&amp;nbsp; &amp;nbsp; }&lt;br /&gt;}&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Print 인터페이스&lt;/P&gt;&lt;p id="more-79-2" class="moreless_fold" style="color: #000000; padding: 0 0 0 10px;"&gt;&lt;span style="cursor: pointer;" onclick="if (window.TC$PRIV_toggleMoreLessBlogger != undefined) {TC$PRIV_toggleMoreLessBlogger(this, '79-2','펼쳐두기..','접어두기..'); return false;} else {document.getElementById('content-79-2').style.display='';}"&gt;      펼쳐두기..&lt;/span&gt;&lt;/p&gt;  &lt;div id="content-79-2" class="moreless_content" style="display: none; border: 1px dashed #cccccc; background-color: #f3f3f3; margin: 0 10px padding: 5px;"&gt;public interface Print {&lt;br /&gt;&amp;nbsp; &amp;nbsp; public abstract void printWeak();&lt;br /&gt;&amp;nbsp; &amp;nbsp; public abstract void printStrong();&lt;br /&gt;}&lt;/DIV&gt;&lt;P&gt;&lt;br /&gt;PrintBanner 클래스&lt;/P&gt;&lt;P&gt;:어댑터의 역할을 완수합니다. 준비된 Banner클래스를 확장(extends)해서 showWithParen 메소드와 showWithAster 매소드를 상속합니다. 또한 필요한 Print 인터페이스를 구현(implements)해서 printWeak 메소드와 printStrong 메소드를 구현합니다.&lt;/P&gt;&lt;p id="more-79-3" class="moreless_fold" style="color: #000000; padding: 0 0 0 10px;"&gt;&lt;span style="cursor: pointer;" onclick="if (window.TC$PRIV_toggleMoreLessBlogger != undefined) {TC$PRIV_toggleMoreLessBlogger(this, '79-3','펼쳐두기..','접어두기..'); return false;} else {document.getElementById('content-79-3').style.display='';}"&gt;      펼쳐두기..&lt;/span&gt;&lt;/p&gt;  &lt;div id="content-79-3" class="moreless_content" style="display: none; border: 1px dashed #cccccc; background-color: #f3f3f3; margin: 0 10px padding: 5px;"&gt;public class PrintBanner extends Banner implements Print {&lt;br /&gt;&amp;nbsp; &amp;nbsp; public PrintBanner(String string) {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; super(string);&lt;br /&gt;&amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp; &amp;nbsp; public void printWeak() {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; showWithParen();&lt;br /&gt;&amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp; &amp;nbsp; public void printStrong() {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; showWithAster();&lt;br /&gt;&amp;nbsp; &amp;nbsp; }&lt;br /&gt;}&lt;/DIV&gt;&lt;P&gt;&lt;br /&gt;Main 클래스&lt;/P&gt;&lt;P&gt;:어댑터 역할의 PrintBanner 클래스를 사용해서 Hello라는 문자열을 약하게(괄호를 붙임) 또는 강하게(*를 붙임) 표시합니다.&lt;/P&gt;&lt;p id="more-79-4" class="moreless_fold" style="color: #000000; padding: 0 0 0 10px;"&gt;&lt;span style="cursor: pointer;" onclick="if (window.TC$PRIV_toggleMoreLessBlogger != undefined) {TC$PRIV_toggleMoreLessBlogger(this, '79-4','펼쳐두기..','접어두기..'); return false;} else {document.getElementById('content-79-4').style.display='';}"&gt;      펼쳐두기..&lt;/span&gt;&lt;/p&gt;  &lt;div id="content-79-4" class="moreless_content" style="display: none; border: 1px dashed #cccccc; background-color: #f3f3f3; margin: 0 10px padding: 5px;"&gt;public class Main {&lt;br /&gt;&amp;nbsp; &amp;nbsp; public static void main(String[] args) {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Print p = new PrintBanner("Hello");&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; p.printWeak();&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; p.printStrong();&lt;br /&gt;&amp;nbsp; &amp;nbsp; }&lt;br /&gt;}&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;br /&gt;&lt;STRONG&gt;이번에는 인스턴스에 의한 Adapter 패턴을 해보겠습니다.&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;Main클래스, Banner 클래스는 위의 클래스에 의한 것과 같습니다. 그러나 Print는 인터페이스가 아니고 클래스라고 가정합니다.&lt;/P&gt;&lt;P&gt;즉, Banner클래스를 이용하여 Print 클래스와 동일한 메소드를 갖는 클래스를 실현하려는 것입니다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XOCGYXi0sN.jpg" style="width:320px;height:144px;" alt=""  /&gt;&lt;/div&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Print 클래스&lt;/P&gt;&lt;p id="more-79-5" class="moreless_fold" style="color: #000000; padding: 0 0 0 10px;"&gt;&lt;span style="cursor: pointer;" onclick="if (window.TC$PRIV_toggleMoreLessBlogger != undefined) {TC$PRIV_toggleMoreLessBlogger(this, '79-5','펼쳐두기..','접어두기..'); return false;} else {document.getElementById('content-79-5').style.display='';}"&gt;      펼쳐두기..&lt;/span&gt;&lt;/p&gt;  &lt;div id="content-79-5" class="moreless_content" style="display: none; border: 1px dashed #cccccc; background-color: #f3f3f3; margin: 0 10px padding: 5px;"&gt;public interface Print {&lt;br /&gt;&amp;nbsp; &amp;nbsp; public abstract void printWeak();&lt;br /&gt;&amp;nbsp; &amp;nbsp; public abstract void printStrong();&lt;br /&gt;}&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;PrintBanner 클래스&lt;/P&gt;&lt;p id="more-79-6" class="moreless_fold" style="color: #000000; padding: 0 0 0 10px;"&gt;&lt;span style="cursor: pointer;" onclick="if (window.TC$PRIV_toggleMoreLessBlogger != undefined) {TC$PRIV_toggleMoreLessBlogger(this, '79-6','펼쳐두기..','접어두기..'); return false;} else {document.getElementById('content-79-6').style.display='';}"&gt;      펼쳐두기..&lt;/span&gt;&lt;/p&gt;  &lt;div id="content-79-6" class="moreless_content" style="display: none; border: 1px dashed #cccccc; background-color: #f3f3f3; margin: 0 10px padding: 5px;"&gt;public class PrintBanner extends Print {&lt;br /&gt;&amp;nbsp; &amp;nbsp; private Banner banner;&lt;br /&gt;&amp;nbsp; &amp;nbsp; public PrintBanner(String string) {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.banner = new Banner(string);&lt;br /&gt;&amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp; &amp;nbsp; public void printWeak() {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; banner.showWithParen();&lt;br /&gt;&amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp; &amp;nbsp; public void printStrong() {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; banner.showWithAster();&lt;br /&gt;&amp;nbsp; &amp;nbsp; }&lt;br /&gt;}&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;- 클래스에 의한 Apapter 패턴의 클래스 다이어그램(상속을 사용)&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XXGs7XRfYM.jpg" style="width:453px;height:146px;" alt=""  /&gt;&lt;/div&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;- 인스턴스에 의한 Adapter 패턴의 클래스 다이어그램(위임을 사용) &lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XYuaMUTFDQ.jpg" style="width:453px;height:146px;" alt=""  /&gt;&lt;/div&gt;&lt;/P&gt;&lt;P&gt;Target(대상) 역할&lt;/P&gt;&lt;P&gt;: 지금 필요한 메소드를 결정합니다. 노트북을 작동시키기 위한 직류 12볼트에 해당합니다. 예제 프로그램에서는 Print 인터페이스나 Print 클래스가 이 역할을 합니다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Client(의뢰자) 역할&lt;/P&gt;&lt;P&gt;: Target 역할의 메소드를 사용해서 일을 합니다. 직류 12볼트로 움직이는 노트북에 해당합니다. 예제 프로그램에서는 Main에 클래스가 이 역할을 합니다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Adaptee(개조되는 쪽) 역할&lt;/P&gt;&lt;P&gt;: 이미 준비되어 있는 메소드를 가지고 있는 역할입니다. 교류 100볼트의 AC전원에 해당하며, 예제 프로그램에서는 Banner 클래스가 이 역할을 합니다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Adapter 역할&lt;/P&gt;&lt;P&gt;: Adaptee 역할의 메소드를 사용해서 어떻게든 Target 역할을 만족시키기 위한 것이 Adapter 패턴의 목적이며, Adapter 역할의 임무입니다. 예제 프로그램에서는 PrrintBanner 클래스가 Adapter의 역할입니다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;a href="http://ss.textcube.com/blog/1/10879/attach/XcxzSBi23M.alz/Adapter%28JAVA%29.alz" rel="enclosure" &gt;&lt;img src="http://ss.textcube.com/service/blog/image/extension/unknown.gif" alt="" style="vertical-align: middle;" /&gt; Adapter(JAVA).alz&lt;/a&gt;&lt;/div&gt;&lt;/P&gt;&lt;P&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;a href="http://ss.textcube.com/blog/1/10879/attach/XKlWLDg4pg.alz/Adapter%28C%23%29.alz" rel="enclosure" &gt;&lt;img src="http://ss.textcube.com/service/blog/image/extension/unknown.gif" alt="" style="vertical-align: middle;" /&gt; Adapter(C#).alz&lt;/a&gt;&lt;/div&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2357933784790449713-2001223284175843956?l=akangels-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akangels-textcube.blogspot.com/feeds/2001223284175843956/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://akangels-textcube.blogspot.com/2009/09/adapter-pattern.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/2001223284175843956'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/2001223284175843956'/><link rel='alternate' type='text/html' href='http://akangels-textcube.blogspot.com/2009/09/adapter-pattern.html' title='Adapter Pattern'/><author><name>아크엔젤스</name><uri>http://www.blogger.com/profile/10209348568937169243</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2357933784790449713.post-231990231054042396</id><published>2009-09-28T08:03:00.000+09:00</published><updated>2011-01-29T19:57:24.518+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Iterator Pattern'/><category scheme='http://www.blogger.com/atom/ns#' term='디자인 패턴'/><category scheme='http://www.blogger.com/atom/ns#' term='iterator'/><category scheme='http://www.blogger.com/atom/ns#' term='Design pattern'/><title type='text'>Iterator Pattern</title><content type='html'>&lt;script src='http://ss.textcube.com/service/blog/script/blogger.js' type='text/javascript'&gt;&lt;/script&gt;&lt;P&gt;Iterator Pattern이란?&lt;/P&gt;&lt;P&gt;예를 들어서.. 자바에서 배열 arr의 모든 요소를 표시하기 위해서 다음과 같이 for 문을 사용합니다.&lt;/P&gt;&lt;p id="more-78-0" class="moreless_fold" style="color: #000000; padding: 0 0 0 10px;"&gt;&lt;span style="cursor: pointer;" onclick="if (window.TC$PRIV_toggleMoreLessBlogger != undefined) {TC$PRIV_toggleMoreLessBlogger(this, '78-0','펼쳐두기..','접어두기..'); return false;} else {document.getElementById('content-78-0').style.display='';}"&gt;      펼쳐두기..&lt;/span&gt;&lt;/p&gt;  &lt;div id="content-78-0" class="moreless_content" style="display: none; border: 1px dashed #cccccc; background-color: #f3f3f3; margin: 0 10px padding: 5px;"&gt;&lt;P&gt;for (int i = 0; i&amp;lt;arr.length; i++){&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; System.out.println(arr[i])&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;/DIV&gt;&lt;P&gt;&lt;br /&gt;for문의 i++에서 i를 하나씩 증가시키면 현재 주목하고 있는 배열의 요소를 차례대로 처리해갑니다. 이ㅗ아같이 i를 하나씩 증가시키면 배열 arr이ㅡ 요소 전체를 처음부터 차례대로 검색하게 됩니다. 여기에서 사용되고 있는&lt;FONT color=#001ea1&gt; &lt;/FONT&gt;&lt;FONT color=#38cc1a&gt;&lt;STRONG&gt;변수 i의 기능을 추상화해서 일반화한것을 디자인 패턴에서는 Iterator Pattern이라고 합니다.&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;즉, Iterator Pattern이란 무엇인가 많이 모여있는 것들을 순서대로 지정하면서 전체를 검색하는 처리를 실행하기 위한 것입니다.&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;예제 프로그램을 한번 만들어 보겠습니다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=center&gt;일단 예제 프로그램의 이미지 다이어그램입니다.&lt;/P&gt;&lt;P&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XU8INmjh7Q.png" style="width:400px;height:311px;" alt="" onclick="TC$PRIV_open_img('http://ss.textcube.com/blog/1/10879/attach/XU8INmjh7Q.png')" /&gt;&lt;/div&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;예제 프로그램의 클래스 다이어그램입니다.&lt;/P&gt;&lt;P&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XJiDbMHEOs.jpg" style="width:277px;height:306px;" alt=""  /&gt;&lt;/div&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Aggregate : 집합체를 나타내는 인터페이스&lt;/P&gt;&lt;P&gt;Iterator : 하나씩 나열하면서 검색을 실행하는 인터페이스&lt;/P&gt;&lt;P&gt;Book : 책을 나타내는 클래스&lt;/P&gt;&lt;P&gt;BookShelf : 서가를 나타내는 클래스&lt;/P&gt;&lt;P&gt;BookShelfIterator : 서가를 검색하는 클래스&lt;/P&gt;&lt;P&gt;Main : 동작 테스트용 클래스&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;예제프로그램의 소스파일들입니다. 공부하고있는 책의 소스파일과 제가 C#으로 바꾸어 본 소스파일입니다.&lt;/P&gt;&lt;P&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;a href="http://ss.textcube.com/blog/1/10879/attach/XCmmf53JDh.alz/Iterator%28C%23%29.alz" rel="enclosure" &gt;&lt;img src="http://ss.textcube.com/service/blog/image/extension/unknown.gif" alt="" style="vertical-align: middle;" /&gt; Iterator(C#).alz&lt;/a&gt;&lt;/div&gt;&lt;/P&gt;&lt;P&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;a href="http://ss.textcube.com/blog/1/10879/attach/XHkGfbEvXa.alz/Iterator%28JAVA%29.alz" rel="enclosure" &gt;&lt;img src="http://ss.textcube.com/service/blog/image/extension/unknown.gif" alt="" style="vertical-align: middle;" /&gt; Iterator(JAVA).alz&lt;/a&gt;&lt;/div&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Aggregate 인터페이스&lt;/P&gt;&lt;P&gt;: Aggregate 인터페이스는 요소들이 나열되어있는 집합체를 나타냅니다. &lt;/P&gt;&lt;p id="more-78-1" class="moreless_fold" style="color: #000000; padding: 0 0 0 10px;"&gt;&lt;span style="cursor: pointer;" onclick="if (window.TC$PRIV_toggleMoreLessBlogger != undefined) {TC$PRIV_toggleMoreLessBlogger(this, '78-1','펼쳐두기..','접어두기..'); return false;} else {document.getElementById('content-78-1').style.display='';}"&gt;      펼쳐두기..&lt;/span&gt;&lt;/p&gt;  &lt;div id="content-78-1" class="moreless_content" style="display: none; border: 1px dashed #cccccc; background-color: #f3f3f3; margin: 0 10px padding: 5px;"&gt;public interface Aggregate {&lt;br /&gt;&amp;nbsp; &amp;nbsp; public abstract Iterator iterator();&lt;br /&gt;}&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Iterator 인터페이스&lt;/P&gt;&lt;P&gt;: 요소를 하나식 나열하면서 루프 변수와 같은 역할을 수행합니다.&lt;/P&gt;&lt;p id="more-78-2" class="moreless_fold" style="color: #000000; padding: 0 0 0 10px;"&gt;&lt;span style="cursor: pointer;" onclick="if (window.TC$PRIV_toggleMoreLessBlogger != undefined) {TC$PRIV_toggleMoreLessBlogger(this, '78-2','펼쳐두기..','접어두기..'); return false;} else {document.getElementById('content-78-2').style.display='';}"&gt;      펼쳐두기..&lt;/span&gt;&lt;/p&gt;  &lt;div id="content-78-2" class="moreless_content" style="display: none; border: 1px dashed #cccccc; background-color: #f3f3f3; margin: 0 10px padding: 5px;"&gt;public interface Iterator {&lt;br /&gt;&amp;nbsp; &amp;nbsp; public abstract boolean hasNext();&lt;br /&gt;&amp;nbsp; &amp;nbsp; public abstract Object next();&lt;br /&gt;}&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;여기에 선언되어 있는 메소드는 2개, 다음 요소가 존재하는지를 조사하기 위한 hasNext메소드와&lt;/P&gt;&lt;P&gt;다음 요소를 얻기위한 next메소드입니다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Book 클래스&lt;/P&gt;&lt;P&gt;: 책을 나태나는 클래스입니다. 할수 있는 일은 책 이름을 getName메소드에서 얻는 일뿐입니다.&lt;/P&gt;&lt;p id="more-78-3" class="moreless_fold" style="color: #000000; padding: 0 0 0 10px;"&gt;&lt;span style="cursor: pointer;" onclick="if (window.TC$PRIV_toggleMoreLessBlogger != undefined) {TC$PRIV_toggleMoreLessBlogger(this, '78-3','펼쳐두기..','접어두기..'); return false;} else {document.getElementById('content-78-3').style.display='';}"&gt;      펼쳐두기..&lt;/span&gt;&lt;/p&gt;  &lt;div id="content-78-3" class="moreless_content" style="display: none; border: 1px dashed #cccccc; background-color: #f3f3f3; margin: 0 10px padding: 5px;"&gt;public class Book {&lt;br /&gt;&amp;nbsp; &amp;nbsp; private String name = "";&lt;br /&gt;&amp;nbsp; &amp;nbsp; public Book(String name) {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.name = name;&lt;br /&gt;&amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp; &amp;nbsp; public String getName() {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return name;&lt;br /&gt;&amp;nbsp; &amp;nbsp; }&lt;br /&gt;}&lt;/DIV&gt;&lt;P&gt;&lt;br /&gt;BookShelf 클래스&lt;/P&gt;&lt;P&gt;: 서가를 나태나는 클래스입니다. 이 클래스는 집합체를 다루기 위해 Aggregate 인터페이스를 구현하고 있는 것을 나타냅니다. 또한 Aggregate 인터페이스에서 선언되어 있던 iterator 메소드가 기술되어 있는 것도 확인할수 있습니다.&lt;/P&gt;&lt;p id="more-78-4" class="moreless_fold" style="color: #000000; padding: 0 0 0 10px;"&gt;&lt;span style="cursor: pointer;" onclick="if (window.TC$PRIV_toggleMoreLessBlogger != undefined) {TC$PRIV_toggleMoreLessBlogger(this, '78-4','펼쳐두기..','접어두기..'); return false;} else {document.getElementById('content-78-4').style.display='';}"&gt;      펼쳐두기..&lt;/span&gt;&lt;/p&gt;  &lt;div id="content-78-4" class="moreless_content" style="display: none; border: 1px dashed #cccccc; background-color: #f3f3f3; margin: 0 10px padding: 5px;"&gt;public class BookShelf implements Aggregate {&lt;br /&gt;&amp;nbsp; &amp;nbsp; private Book[] books;&lt;br /&gt;&amp;nbsp; &amp;nbsp; private int last = 0;&lt;br /&gt;&amp;nbsp; &amp;nbsp; public BookShelf(int maxsize) {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.books = new Book[maxsize];&lt;br /&gt;&amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp; &amp;nbsp; public Book getBookAt(int index) {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return books[index];&lt;br /&gt;&amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp; &amp;nbsp; public void appendBook(Book book) {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.books[last] = book;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; last++;&lt;br /&gt;&amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp; &amp;nbsp; public int getLength() {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return last;&lt;br /&gt;&amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp; &amp;nbsp; public Iterator iterator() {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return new BookShelfIterator(this);&lt;br /&gt;&amp;nbsp; &amp;nbsp; }&lt;br /&gt;}&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;-&amp;gt; 이 서가는 books라느 ㄴ필드를 가지고 있습니다. 이 필드는 Book의 배열입니다 . 이 배열의 크기는 처음에 BookShelf의 인스턴스를 만들 때 지정합니다. books필드를 private로 한 이유는, 이 클래스 외부로부터 뜻하지 않게 변경되는 것을 방지하기 위해서입니다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;-&amp;gt; iterator 메소드는 BookShelf 클래스에 대응하는 Iterator로서, BookShelfIteratot라는 클래스의 인스턴스를 생성해서 그것을 반환합니다. 이 서가의 책을 하나씩 나열하고 싶을 때는 iterator메소드를 호출합니다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;br /&gt;BookShelfIterator 클래스&lt;/P&gt;&lt;P&gt;: 검색을 실행하는 클래스입니다.&lt;/P&gt;&lt;p id="more-78-5" class="moreless_fold" style="color: #000000; padding: 0 0 0 10px;"&gt;&lt;span style="cursor: pointer;" onclick="if (window.TC$PRIV_toggleMoreLessBlogger != undefined) {TC$PRIV_toggleMoreLessBlogger(this, '78-5','펼쳐두기..','접어두기..'); return false;} else {document.getElementById('content-78-5').style.display='';}"&gt;      펼쳐두기..&lt;/span&gt;&lt;/p&gt;  &lt;div id="content-78-5" class="moreless_content" style="display: none; border: 1px dashed #cccccc; background-color: #f3f3f3; margin: 0 10px padding: 5px;"&gt;public class BookShelfIterator implements Iterator {&lt;br /&gt;&amp;nbsp; &amp;nbsp; private BookShelf bookShelf;&lt;br /&gt;&amp;nbsp; &amp;nbsp; private int index;&lt;br /&gt;&amp;nbsp; &amp;nbsp; public BookShelfIterator(BookShelf bookShelf) {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.bookShelf = bookShelf;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.index = 0;&lt;br /&gt;&amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp; &amp;nbsp; public boolean hasNext() {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (index &amp;lt; bookShelf.getLength()) {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return true;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; } else {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return false;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp; &amp;nbsp; public Object next() {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Book book = bookShelf.getBookAt(index);&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; index++;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return book;&lt;br /&gt;&amp;nbsp; &amp;nbsp; }&lt;br /&gt;}&lt;/DIV&gt;&lt;P&gt;&lt;br /&gt;Main 클래스&lt;/P&gt;&lt;P&gt;: 말그대로.. 메인입니다;;&lt;/P&gt;&lt;p id="more-78-6" class="moreless_fold" style="color: #000000; padding: 0 0 0 10px;"&gt;&lt;span style="cursor: pointer;" onclick="if (window.TC$PRIV_toggleMoreLessBlogger != undefined) {TC$PRIV_toggleMoreLessBlogger(this, '78-6','펼쳐두기..','접어두기..'); return false;} else {document.getElementById('content-78-6').style.display='';}"&gt;      펼쳐두기..&lt;/span&gt;&lt;/p&gt;  &lt;div id="content-78-6" class="moreless_content" style="display: none; border: 1px dashed #cccccc; background-color: #f3f3f3; margin: 0 10px padding: 5px;"&gt;public class Main {&lt;br /&gt;&amp;nbsp; &amp;nbsp; public static void main(String[] args) {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; BookShelf bookShelf = new BookShelf(4);&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; bookShelf.appendBook(new Book("Around the World in 80 Days"));&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; bookShelf.appendBook(new Book("Bible"));&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; bookShelf.appendBook(new Book("Cinderella"));&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; bookShelf.appendBook(new Book("Daddy-Long-Legs"));&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Iterator it = bookShelf.iterator();&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; while (it.hasNext()) {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Book book = (Book)it.next();&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; System.out.println("" + book.getName());&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp; &amp;nbsp; }&lt;br /&gt;}&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;소스에 대한 설명은 거의 언급하지 않았습니다. 굳이 알고싶으시다면.. 따로 물어보시기 바랍니다.....;;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;왜!! 이런것을 쓰는 것일까 하는 의문이 들것입니다.. 그냥 간단히 하면 몇줄도 안되고 클래스 하나로도 할수 있는데 말입니다..;; -0-;;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;가장 큰 이유는 Iterator를 사용함으로써 구현과 분리해서 하나씩 셀수 있기 때문입니다.&lt;/STRONG&gt;&lt;/P&gt;&lt;p id="more-78-7" class="moreless_fold" style="color: #000000; padding: 0 0 0 10px;"&gt;&lt;span style="cursor: pointer;" onclick="if (window.TC$PRIV_toggleMoreLessBlogger != undefined) {TC$PRIV_toggleMoreLessBlogger(this, '78-7','펼쳐두기..','접어두기..'); return false;} else {document.getElementById('content-78-7').style.display='';}"&gt;      펼쳐두기..&lt;/span&gt;&lt;/p&gt;  &lt;div id="content-78-7" class="moreless_content" style="display: none; border: 1px dashed #cccccc; background-color: #f3f3f3; margin: 0 10px padding: 5px;"&gt;while (it.hasNext()) {&lt;br /&gt;&amp;nbsp; &amp;nbsp; Book book = (Book)it.next();&lt;br /&gt;&amp;nbsp; &amp;nbsp; System.out.println(book.getName());&lt;br /&gt;}&lt;/DIV&gt;&lt;P&gt;&lt;br /&gt;여기에서 사용되고 있는 것은 hasNext와 next라는 메소드 뿐입니다. BookShelf의 구현에서 사용되고 있는 메소드는 호출되고 있지 않습니다. 결국 위 코드의 while 루프는 BookShelf의 구현에는 의존하지 않습니다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Iterator Pattern의 클래스 다이어그램입니다.&lt;/P&gt;&lt;P&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XTFLjDxmMT.jpg" style="width:263px;height:179px;" alt=""  /&gt;&lt;/div&gt;&lt;/P&gt;&lt;P&gt;Iterator(반복자) 역할&lt;/P&gt;&lt;P&gt;: 요소를 순서대로 검색해가는 인터페이스를 결정&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;ConcreteIterator(구체적인 반복자) 역할&lt;/P&gt;&lt;P&gt;: Iterator가 결정한 인터페이스를 실제로 구현&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Aggregate(집합체) 역할&lt;/P&gt;&lt;P&gt;: Iterator 역할을 만들어내는 인터페이스를 결정&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;ConcreteAggregate(구체적인 집합체) 역할&lt;/P&gt;&lt;P&gt;: Aggregate 역할이 결정한 인터페이스를 실제로 구현하는 일을 담당&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;※ 참고서적 :Java 언어로 배우는 디자인 패턴 입문 개정판&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2357933784790449713-231990231054042396?l=akangels-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akangels-textcube.blogspot.com/feeds/231990231054042396/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://akangels-textcube.blogspot.com/2009/09/iterator-pattern.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/231990231054042396'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/231990231054042396'/><link rel='alternate' type='text/html' href='http://akangels-textcube.blogspot.com/2009/09/iterator-pattern.html' title='Iterator Pattern'/><author><name>아크엔젤스</name><uri>http://www.blogger.com/profile/10209348568937169243</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2357933784790449713.post-715295171485557603</id><published>2009-09-22T16:54:00.000+09:00</published><updated>2011-01-29T19:57:24.417+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='mvc'/><category scheme='http://www.blogger.com/atom/ns#' term='Design pattern'/><title type='text'>MVC(Model-View-Controller) #2</title><content type='html'>&lt;script src='http://ss.textcube.com/service/blog/script/blogger.js' type='text/javascript'&gt;&lt;/script&gt;&lt;P align=center&gt;&lt;A href="http://akangels.textcube.com/76" rel=bookmark&gt;&lt;SPAN class=entry-title&gt;&lt;FONT size=2&gt;MVC(Model-View-Controller) #1&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;/P&gt;&lt;P align=left&gt;&lt;br /&gt;위에서 MVC의 개념에 대한 것은 알았고 이번에는 MVC가 나온이유? 또한 문제점이라고 해야하나???&lt;br /&gt;아무튼 머 그런것에 대해 알아보겠다.&lt;br /&gt;&lt;br /&gt;MVC가 나온 이유라면,&lt;br /&gt;View와 Model의 분리입니다. 쉽게 말해 표현계층과 데이터( + 데이터 처리 로직)를 분리하여 데이터 처리 로직이 중복 코딩되는 것을 막고 로직과 엔티티(데이터)를 재 사용하는데 그 목적이 있습니다. 또한 GUI의 단위 테스트 코드를 작성할 수 있을지에 대한 기대감도 포함합니다.&lt;/P&gt;&lt;P align=left&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=left&gt;그런데, View와 Model의 분리가 완벽히 되지 않는다는 문제가 있다.&lt;/P&gt;&lt;P align=left&gt;자 어떻게 안되는지 보자.&lt;/P&gt;&lt;P align=left&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XYLh1VXauu.bmp" style="width:385px;height:309px;" alt=""  /&gt;&lt;/div&gt;&lt;/P&gt;&lt;P align=center&gt;&lt;STRONG&gt;&lt;FONT size=2&gt;&amp;nbsp;MVC passive model &lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P align=center&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=center&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XW4oaaUjRz.bmp" style="width:309px;height:280px;" alt=""  /&gt;&lt;/div&gt;&lt;/P&gt;&lt;P align=center&gt;&lt;STRONG&gt;&lt;FONT size=2&gt;MVC active model&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P align=center&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XAu5B9Wc23.bmp" style="width:370px;height:168px;" alt=""  /&gt;&lt;/div&gt;&lt;STRONG&gt;&lt;FONT size=2&gt;Using observer pattern to decouple the model from view in the active model &lt;/FONT&gt;&lt;/STRONG&gt;&lt;br /&gt;&lt;/P&gt;&lt;P align=center&gt;위의 프로세스를 보면 View와 Model의 관계를 분리하기는 어려워 보인다.&lt;/P&gt;&lt;P align=center&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="TEXT-ALIGN: justify" align=left&gt;출처 : &lt;A href="http://blog.jeidee.net/tag/MVC%20Pattern"&gt;http://blog.jeidee.net/tag/MVC%20Pattern&lt;/A&gt;&lt;/P&gt;&lt;P style="TEXT-ALIGN: justify" align=left&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;A href="http://wrice.egloos.com/4966863"&gt;http://wrice.egloos.com/4966863&lt;/A&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;A href="http://blog.naver.com/blueweber?Redirect=Log&amp;amp;logNo=90052017455"&gt;http://blog.naver.com/blueweber?Redirect=Log&amp;amp;logNo=90052017455&lt;/A&gt;&lt;/P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2357933784790449713-715295171485557603?l=akangels-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akangels-textcube.blogspot.com/feeds/715295171485557603/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://akangels-textcube.blogspot.com/2009/09/mvcmodel-view-controller-2.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/715295171485557603'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/715295171485557603'/><link rel='alternate' type='text/html' href='http://akangels-textcube.blogspot.com/2009/09/mvcmodel-view-controller-2.html' title='MVC(Model-View-Controller) #2'/><author><name>아크엔젤스</name><uri>http://www.blogger.com/profile/10209348568937169243</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2357933784790449713.post-5120164040587115904</id><published>2009-09-22T16:38:00.000+09:00</published><updated>2011-01-29T19:57:24.266+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='디자인 패턴'/><category scheme='http://www.blogger.com/atom/ns#' term='mvc'/><category scheme='http://www.blogger.com/atom/ns#' term='Design pattern'/><title type='text'>MVC(Model-View-Controller) #1</title><content type='html'>&lt;script src='http://ss.textcube.com/service/blog/script/blogger.js' type='text/javascript'&gt;&lt;/script&gt;&lt;P align=center&gt;MVC에 대해 알아보도록하자.&lt;/P&gt;&lt;P align=center&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XKtxi0TLIb.png" style="width:418px;height:330px;" alt=""  /&gt;&lt;/div&gt;&lt;/P&gt;&lt;LI&gt;&lt;DIV style="TEXT-ALIGN: justify"&gt;&lt;STRONG&gt;View&lt;br /&gt;&lt;/STRONG&gt;UI 요소를 그려줍니다.&lt;STRONG&gt; &lt;/STRONG&gt;&lt;/DIV&gt;&lt;LI&gt;&lt;DIV style="TEXT-ALIGN: justify"&gt;&lt;STRONG&gt;Controller&lt;br /&gt;&lt;/STRONG&gt;UI의 사용자 액션에 응답하고 데이터 흐름을 제어합니다.&lt;STRONG&gt; &lt;/STRONG&gt;&lt;/DIV&gt;&lt;LI&gt;&lt;DIV style="TEXT-ALIGN: justify"&gt;&lt;STRONG&gt;Model&lt;br /&gt;&lt;/STRONG&gt;MVP 패턴의 Model과 마찬가지로 데이터와 상태를 유지하며 데이터 처리 로직을 포함합니다.&lt;STRONG&gt; &lt;/STRONG&gt;&lt;/DIV&gt;&lt;/LI&gt;&lt;P style="TEXT-ALIGN: justify"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="TEXT-ALIGN: justify" align=left&gt;&lt;U&gt;여기서 잠깐.. 모델이 Database라고만 오해 하시는 분들이 있을수 있다.. 나역시 지금까지..&lt;/U&gt;&lt;/P&gt;&lt;P style="TEXT-ALIGN: justify" align=left&gt;&lt;U&gt;모델은 DB다! 이렇게 단정지어서 알고 있었기 때문이다. 물론.. 아닌 분들도 있겠지만 말이다.&lt;/U&gt;&lt;/P&gt;&lt;P style="TEXT-ALIGN: justify" align=left&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="TEXT-ALIGN: justify" align=left&gt;결론적으로 말하자면 Model은 사용자를 기준으로 사용자의 정신 상태를 반영하는 것, 다른 말로 (정신적) 모델을 의미합니다.&lt;br /&gt;&lt;/P&gt;&lt;P style="TEXT-ALIGN: justify" align=left&gt;예를 들어, (MVC를 표방하는) MFC 에서 View 라고 하면 UI 인터페이스 편집기에서 버튼달고 메뉴 달고 하는 것을 의미하고 Control 이라고 하면 해당 버튼이나 메뉴에 해당하는 동작들을 클레스 안에다가 구현하는 것을 의미합니다. 그럼 Model 은 어디에 있지요???&lt;br /&gt;&lt;br /&gt;다른 예로 웹 프로그래밍에 유명한 J2EE 의 JaveBean 도 MVC 를 표방합니다. 그런데 JavaBean 으로 코딩을 해보면 각 Bean 들은 Control 이고 JSP 나 HTML 파일들은 View 에 해당합니다. 그럼 Model 은 어디에???&lt;/P&gt;&lt;P style="TEXT-ALIGN: justify" align=left&gt;&lt;br /&gt;정리하면, Control 은 사용장의 입력을 받아서 어떤 "행동"을 하는 것을 담당하고, View 는 모든 처리가 끝난뒤에 사용자에게 "보여지는" 부분을 담당합니다. Model 은 사용자가 머릿속으로 무엇을 연상하면서 그 시스템을 사용중인가를 반영하는 것입니다. 여기에서 Control 과 View 는 Model 과 사용자 사이를 이어주는 "수단"이 되는 것입니다.&lt;/P&gt;&lt;P style="TEXT-ALIGN: justify" align=left&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XV4abXHlu3.bmp" style="width:580px;height:282px;" alt="" onclick="TC$PRIV_open_img('http://ss.textcube.com/blog/1/10879/attach/XV4abXHlu3.bmp')" /&gt;&lt;/div&gt;그러니까 Model이라는것은 DB만을 생각해서는 안되는것이지요.&lt;/P&gt;&lt;P style="TEXT-ALIGN: justify" align=left&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="TEXT-ALIGN: justify" align=left&gt;출처 : &lt;A href="http://blog.jeidee.net/tag/MVC%20Pattern"&gt;http://blog.jeidee.net/tag/MVC%20Pattern&lt;/A&gt;&lt;/P&gt;&lt;P style="TEXT-ALIGN: justify" align=left&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;A href="http://wrice.egloos.com/4966863"&gt;http://wrice.egloos.com/4966863&lt;/A&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;A href="http://blog.naver.com/blueweber?Redirect=Log&amp;amp;logNo=90052017455"&gt;http://blog.naver.com/blueweber?Redirect=Log&amp;amp;logNo=90052017455&lt;/A&gt; &lt;/P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2357933784790449713-5120164040587115904?l=akangels-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akangels-textcube.blogspot.com/feeds/5120164040587115904/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://akangels-textcube.blogspot.com/2009/09/mvcmodel-view-controller-1.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/5120164040587115904'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/5120164040587115904'/><link rel='alternate' type='text/html' href='http://akangels-textcube.blogspot.com/2009/09/mvcmodel-view-controller-1.html' title='MVC(Model-View-Controller) #1'/><author><name>아크엔젤스</name><uri>http://www.blogger.com/profile/10209348568937169243</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2357933784790449713.post-2803209533041937093</id><published>2009-09-22T15:35:00.000+09:00</published><updated>2011-01-29T19:57:24.071+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='viewmodel'/><category scheme='http://www.blogger.com/atom/ns#' term='MVVM'/><category scheme='http://www.blogger.com/atom/ns#' term='Mdoel'/><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='디자인 패턴'/><category scheme='http://www.blogger.com/atom/ns#' term='Design pattern'/><category scheme='http://www.blogger.com/atom/ns#' term='view'/><title type='text'>MVVM(Model-View-ViewModel) #1</title><content type='html'>&lt;script src='http://ss.textcube.com/service/blog/script/blogger.js' type='text/javascript'&gt;&lt;/script&gt;&lt;P align=center&gt;&lt;A href="http://akangels.textcube.com/73" rel=bookmark&gt;&lt;SPAN class=entry-title&gt;WPF 세금계산서,거래명세표,분기별보고 연동 설계&lt;/SPAN&gt;&lt;/A&gt;&lt;/P&gt;&lt;P align=center&gt;위의 프로그램을 설계 및 구현을 MVVM 패턴을 사용하여 할려고 한다.&lt;/P&gt;&lt;P align=center&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=center&gt;일단 MVVM 패턴의 대략적인 모습을 보겠다.&lt;/P&gt;&lt;P align=center&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XWEwPCjX8Q.gif" style="width:450px;height:369px;" alt=""  /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XY2ScLXuak.jpg" style="width:580px;height:434px;" alt="" onclick="TC$PRIV_open_img('http://ss.textcube.com/blog/1/10879/attach/XY2ScLXuak.jpg')" /&gt;&lt;/div&gt;&lt;/P&gt;&lt;P align=center&gt;위의 그림은 MVVM 패턴에 대해 한눈에 알수 있는 그림이다.&lt;/P&gt;&lt;P align=center&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=center&gt;MVVM이나 MVP, MVC 패턴들은 개념적인 면에서 비슷한듯하다.&lt;/P&gt;&lt;P align=center&gt;어쨋든.. MVVM 패턴을 사용하려면&lt;/P&gt;&lt;P align=center&gt;데이터 바인딩에 커맨드에 등등 알아야 할것들이 많은 듯하다. 물론 이전에 나왔었던&lt;/P&gt;&lt;P align=center&gt;MVC, MVP에 대해서도 알아야 할 필요를 느꼈다.&lt;/P&gt;&lt;P align=center&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=center&gt;- 이미지 출처 및 MVVM 관련 참고사이트 -&lt;/P&gt;&lt;P align=left&gt;데이터 바인딩 : &lt;/P&gt;&lt;P align=left&gt;&lt;A href="http://msdn.microsoft.com/ko-kr/magazine/cc700358.aspx" target=_blank&gt;http://msdn.microsoft.com/ko-kr/magazine/cc700358.aspx&lt;/A&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=left&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=left&gt;MVVM :&lt;/P&gt;&lt;P align=left&gt;&lt;A href="http://msdn.microsoft.com/ko-kr/magazine/dd419663.aspx" target=_blank&gt;http://msdn.microsoft.com/ko-kr/magazine/dd419663.aspx&lt;/A&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=left&gt;&lt;A href="http://msdn.microsoft.com/ko-kr/magazine/ee321573(en-us).aspx" target=_blank&gt;http://msdn.microsoft.com/ko-kr/magazine/ee321573(en-us).aspx&lt;/A&gt;&lt;/P&gt;&lt;P align=left&gt;&lt;A href="http://iamadeveloper.co.kr/seminar/default.aspx" target=_blank&gt;http://iamadeveloper.co.kr/seminar/default.aspx&lt;/A&gt;&amp;nbsp; (I am a developer)&lt;/P&gt;&lt;P align=left&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=left&gt;커맨드 패턴 :&lt;/P&gt;&lt;P align=left&gt;&lt;A href="http://devyongsik.tistory.com/194?srchid=BR1http%3A%2F%2Fdevyongsik.tistory.com%2F194" target=_blank&gt;http://devyongsik.tistory.com/194?srchid=BR1http%3A%2F%2Fdevyongsik.tistory.com%2F194&lt;/A&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=left&gt;&lt;A href="http://gongdosoft.com/364" target=_blank&gt;http://gongdosoft.com/364&lt;/A&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=left&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=left&gt;MVC, MVP :&lt;/P&gt;&lt;P align=left&gt;&lt;A href="http://blog.jeidee.net/tag/MVC%20Pattern" target=_blank&gt;http://blog.jeidee.net/tag/MVC%20Pattern&lt;/A&gt;&amp;nbsp;// MVC&lt;/P&gt;&lt;P align=left&gt;&lt;A href="http://endlessprogramming.tistory.com/321" target=_blank&gt;http://endlessprogramming.tistory.com/321&lt;/A&gt;&amp;nbsp;//MVP&lt;/P&gt;&lt;P align=left&gt;&lt;A href="http://blog.altprog.com//articles/35" target=_blank&gt;http://blog.altprog.com//articles/35&lt;/A&gt;&amp;nbsp;// MVC Vs MVP&lt;/P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2357933784790449713-2803209533041937093?l=akangels-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akangels-textcube.blogspot.com/feeds/2803209533041937093/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://akangels-textcube.blogspot.com/2009/09/mvvmmodel-view-viewmodel-1.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/2803209533041937093'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/2803209533041937093'/><link rel='alternate' type='text/html' href='http://akangels-textcube.blogspot.com/2009/09/mvvmmodel-view-viewmodel-1.html' title='MVVM(Model-View-ViewModel) #1'/><author><name>아크엔젤스</name><uri>http://www.blogger.com/profile/10209348568937169243</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2357933784790449713.post-2275386515445603606</id><published>2009-09-17T18:02:00.000+09:00</published><updated>2011-01-29T19:57:23.897+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WPF'/><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='클래스 다이어그램'/><title type='text'>WPF 세금계산서,거래명세표,분기별보고 연동 설계</title><content type='html'>&lt;script src='http://ss.textcube.com/service/blog/script/blogger.js' type='text/javascript'&gt;&lt;/script&gt;&lt;P align=center&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XHWxYKzbgc.jpg" style="width:580px;height:600px;" alt="" onclick="TC$PRIV_open_img('http://ss.textcube.com/blog/1/10879/attach/XHWxYKzbgc.jpg')" /&gt;&lt;/div&gt;&lt;/P&gt;&lt;P align=center&gt;설계 Ver 1.0 의 설계객체모델(클래스다이어그램)이다.&lt;/P&gt;&lt;P align=center&gt;시퀸스는 생략하기로 하겠다.&lt;/P&gt;&lt;P align=center&gt;내마음대로.. 프로젝트..니까;;&lt;/P&gt;&lt;P align=center&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=center&gt;아직 수정해야 할 부분이 많겠지만...&lt;/P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2357933784790449713-2275386515445603606?l=akangels-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akangels-textcube.blogspot.com/feeds/2275386515445603606/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://akangels-textcube.blogspot.com/2009/09/wpf-%EC%84%B8%EA%B8%88%EA%B3%84%EC%82%B0%EC%84%9C%EA%B1%B0%EB%9E%98%EB%AA%85%EC%84%B8%ED%91%9C%EB%B6%84%EA%B8%B0%EB%B3%84%EB%B3%B4%EA%B3%A0-%EC%97%B0%EB%8F%99-%EC%84%A4%EA%B3%84.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/2275386515445603606'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/2275386515445603606'/><link rel='alternate' type='text/html' href='http://akangels-textcube.blogspot.com/2009/09/wpf-%EC%84%B8%EA%B8%88%EA%B3%84%EC%82%B0%EC%84%9C%EA%B1%B0%EB%9E%98%EB%AA%85%EC%84%B8%ED%91%9C%EB%B6%84%EA%B8%B0%EB%B3%84%EB%B3%B4%EA%B3%A0-%EC%97%B0%EB%8F%99-%EC%84%A4%EA%B3%84.html' title='WPF 세금계산서,거래명세표,분기별보고 연동 설계'/><author><name>아크엔젤스</name><uri>http://www.blogger.com/profile/10209348568937169243</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2357933784790449713.post-7140679054941878880</id><published>2009-09-15T14:06:00.000+09:00</published><updated>2011-01-29T19:57:23.770+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WPF'/><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='연동'/><category scheme='http://www.blogger.com/atom/ns#' term='거래명세표'/><category scheme='http://www.blogger.com/atom/ns#' term='세금계산서'/><title type='text'>WPF 세금계산서,거래명세표,분기별보고 연동 요구사항</title><content type='html'>&lt;script src='http://ss.textcube.com/service/blog/script/blogger.js' type='text/javascript'&gt;&lt;/script&gt;&lt;P&gt;&lt;div class="imageblock dual center" style="text-align: center; clear: both;"&gt;&lt;table cellspacing="5" cellpadding="0" border="0" style="margin:0 auto;"&gt;&lt;tr&gt;&lt;td&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XDRUEGD9oy.jpg" style="width:256px;height:374px;" alt=""  /&gt;&lt;/td&gt;&lt;td&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XU1hM1Quut.jpg" style="width:290px;height:453px;" alt="" onclick="TC$PRIV_open_img('http://ss.textcube.com/blog/1/10879/attach/XU1hM1Quut.jpg')" /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;&lt;DIV align=left&gt;거래명세표에 업제명을 적는다.&lt;/DIV&gt;&lt;/LI&gt;&lt;LI&gt;&lt;DIV align=left&gt;품목, 규격, 수량, 가격 등을 적는다.&lt;/DIV&gt;&lt;/LI&gt;&lt;LI&gt;&lt;DIV align=left&gt;인쇄&lt;/DIV&gt;&lt;/LI&gt;&lt;LI&gt;&lt;DIV align=left&gt;전달&lt;/DIV&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;P align=center&gt;위 4가지의 순서안에 다음과 같은 요구사항이 필요하다.&lt;/P&gt;&lt;P align=center&gt;&amp;nbsp;&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;거래명세표 작성시 업체명을 입력하면 그에 해당하는 정보가 세금계산서과 분기별 보고서에 입력 및 저장되어야 한다. &lt;/LI&gt;- 정보 : 등록번호, 상호, 성명, 사업장주소, 업태, 종목 &lt;LI&gt;거래명세표 작성시 입력된 품목에 대한 정보는 세금계산서와 분기별 보고서에 입력되어야 한다.&lt;/LI&gt;&lt;LI&gt;분기별 보고서는 각 월별, 분기별 합계가 나와야한다.&lt;/LI&gt;&lt;LI&gt;임의의 업체에 대한 정보가 없을시에는 저장할수 있는 인테페이스 필요&lt;/LI&gt;&lt;LI&gt;임의의 업체에 대한 정보가 수정되었을시에 수정할수 있는 인터페이스 필요(사업자가 바뀌었을경우)&lt;/LI&gt;&lt;LI&gt;명세서 입력 및 인쇄 일자는 자동으로 입력하되, 사용자가 임의로 수정가능하게 한다.&lt;/LI&gt;&lt;LI&gt;거래명세표에 입력되어진 정보를 사용자가 변경할경우 DB파일 사용자의 의사에 따라서 수정하여야한다.&lt;/LI&gt;&lt;LI&gt;DB파일은 각각 날짜별로 백업하여야 한다.(거래내용)&lt;/LI&gt;&lt;/OL&gt;&lt;P align=center&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=center&gt;프로그램을 만들기 전에 일단 생각나는것을 요구사항을 적어보았다.&lt;/P&gt;&lt;P align=center&gt;물론 추후에 추가될수도있고 수정될수도 있다.&lt;/P&gt;&lt;P align=center&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=center&gt;설계를 할려고하니. 이거 은근히.. 복잡하네 -0- 으..&lt;/P&gt;&lt;P align=center&gt;&amp;nbsp;&lt;/P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2357933784790449713-7140679054941878880?l=akangels-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akangels-textcube.blogspot.com/feeds/7140679054941878880/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://akangels-textcube.blogspot.com/2009/09/wpf-%EC%84%B8%EA%B8%88%EA%B3%84%EC%82%B0%EC%84%9C%EA%B1%B0%EB%9E%98%EB%AA%85%EC%84%B8%ED%91%9C%EB%B6%84%EA%B8%B0%EB%B3%84%EB%B3%B4%EA%B3%A0-%EC%97%B0%EB%8F%99-%EC%9A%94%EA%B5%AC%EC%82%AC%ED%95%AD.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/7140679054941878880'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/7140679054941878880'/><link rel='alternate' type='text/html' href='http://akangels-textcube.blogspot.com/2009/09/wpf-%EC%84%B8%EA%B8%88%EA%B3%84%EC%82%B0%EC%84%9C%EA%B1%B0%EB%9E%98%EB%AA%85%EC%84%B8%ED%91%9C%EB%B6%84%EA%B8%B0%EB%B3%84%EB%B3%B4%EA%B3%A0-%EC%97%B0%EB%8F%99-%EC%9A%94%EA%B5%AC%EC%82%AC%ED%95%AD.html' title='WPF 세금계산서,거래명세표,분기별보고 연동 요구사항'/><author><name>아크엔젤스</name><uri>http://www.blogger.com/profile/10209348568937169243</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2357933784790449713.post-252237324136632503</id><published>2009-08-20T23:48:00.000+09:00</published><updated>2011-01-29T19:57:23.648+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Diary'/><category scheme='http://www.blogger.com/atom/ns#' term='여행'/><title type='text'>09/08/20 bye Israel</title><content type='html'>&lt;P align=center&gt;21일 0시 출국&lt;/P&gt;&lt;P align=center&gt;아침 8시30분부터 세루트를 부르기위해 전화하였다.&lt;/P&gt;&lt;P align=center&gt;1시간이 지나도 2시간이 지나도..&lt;/P&gt;&lt;P align=center&gt;전화는 통화중이였다. 그렇게 오후 2시쯤 되어서야&lt;/P&gt;&lt;P align=center&gt;세루트에 전화를 할수 있었다..&lt;/P&gt;&lt;P align=center&gt;참.. 이나라 -0- 너무한거 아닌가.. 세루트하나 부르기위해&lt;/P&gt;&lt;P align=center&gt;몇시간을 투자한건가 간단한 전화 한통화를 위해 말이다.&lt;/P&gt;&lt;P align=center&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=center&gt;아무튼 어렵게 세루트와의 컨택을 성공한 나는 밤 8시까지 이렇게&lt;/P&gt;&lt;P align=center&gt;기다리고있다.&lt;/P&gt;&lt;P align=center&gt;앞으로 2시간정도후면 세루트를 타고 출국장소로 가게 될것이다.&lt;/P&gt;&lt;P align=center&gt;이스라엘.. 입국심사도 까다롭기로 유명하지만&lt;/P&gt;&lt;P align=center&gt;출국심사는 더 까다롭다.&lt;/P&gt;&lt;P align=center&gt;이것저것 하나부터 열까지 전부 뒤져본다는데...&lt;/P&gt;&lt;P align=center&gt;아.. 짐을싸면서도 이렇게 까지 정리할필요가 있을가 싶었다..&lt;/P&gt;&lt;P align=center&gt;어차피. 다시 정리해야 할 것이기때문에...&lt;/P&gt;&lt;P align=center&gt;작은 가방 하나까지도 다 보기때문에.. 에휴..&lt;/P&gt;&lt;P align=center&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=center&gt;참 이상한 나라 이스라엘에서 3주동안 있으면서&lt;/P&gt;&lt;P align=center&gt;많이 둘러보았다고 말할순 없지만...&lt;/P&gt;&lt;P align=center&gt;그래도 많은 일들이 있었던것 같다.&lt;/P&gt;&lt;P align=center&gt;생일날 외국인친구와 영화도 보고, 프랑스 친구를 사귀어 같이 여행도 다니고&lt;/P&gt;&lt;P align=center&gt;폴란드 친구를 사귀어.. 히딩크 감독 어쩌구 저쩌구 이야기도 하고..&lt;/P&gt;&lt;P align=center&gt;지도안가지고... 밖으로 나와.. 만난 이탈리아 친구..&lt;/P&gt;&lt;P align=center&gt;마사다를 가다가 만난 인도네시아친구..&lt;/P&gt;&lt;P align=center&gt;에일랏에 가서 만난 나사렛 친구..&lt;/P&gt;&lt;P align=center&gt;티베리아가서 만난 독일친구들..&lt;/P&gt;&lt;P align=center&gt;등등..&lt;/P&gt;&lt;P align=center&gt;많은 일들이 있었던것 같다.&lt;/P&gt;&lt;P align=center&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=center&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=center&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=center&gt;그나저나 세루트는 정확한 시간에 와줄지 모르겠네... 이넘의 나라.. 쩝..&lt;/P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2357933784790449713-252237324136632503?l=akangels-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akangels-textcube.blogspot.com/feeds/252237324136632503/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://akangels-textcube.blogspot.com/2009/08/090820-bye-israel.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/252237324136632503'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/252237324136632503'/><link rel='alternate' type='text/html' href='http://akangels-textcube.blogspot.com/2009/08/090820-bye-israel.html' title='09/08/20 bye Israel'/><author><name>아크엔젤스</name><uri>http://www.blogger.com/profile/10209348568937169243</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2357933784790449713.post-5514721846980403192</id><published>2009-08-19T02:57:00.000+09:00</published><updated>2011-01-29T19:57:23.564+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Diary'/><category scheme='http://www.blogger.com/atom/ns#' term='여행'/><title type='text'>09/08/16~18 마사다,사해,그리고 에일랏</title><content type='html'>&lt;script src='http://ss.textcube.com/service/blog/script/blogger.js' type='text/javascript'&gt;&lt;/script&gt;&lt;P&gt;&lt;div id="tt-gallery-70-0" class="tt-gallery-box" style="text-align: center; clear: both;"&gt;  &lt;script type="text/javascript"&gt;    //&lt;![CDATA[      var gallery70_0 = new TC$PRIV_TTGallery("tt-gallery-70-0");      gallery70_0.prevText = "이전 이미지 보기 버튼";       gallery70_0.nextText = "다음 이미지 보기 버튼";       gallery70_0.enlargeText = "원본 크기로 보기 버튼";       gallery70_0.altText = "갤러리 이미지"; gallery70_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XKje8wTb6B.jpg", "", 400, 300, "", "");gallery70_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XPIwVHXW8u.jpg", "", 400, 300, "", "");gallery70_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XNGiLHznPz.jpg", "", 400, 300, "", "");gallery70_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XYKLYxS7iW.jpg", "", 400, 300, "", "");gallery70_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XQoTAi2G7d.jpg", "", 400, 300, "", "");gallery70_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XfelIeVkDm.jpg", "", 400, 300, "", "");gallery70_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XLSjIWRtIx.jpg", "", 400, 300, "", "");gallery70_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XVJRZUk3BY.jpg", "", 400, 300, "", "");gallery70_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XFbZNMGP2p.jpg", "", 400, 300, "", "");gallery70_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XS9X29lgZ2.jpg", "", 400, 300, "", "");gallery70_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XVwJonSD25.jpg", "", 400, 300, "", "");gallery70_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/Xea18Y1RGo.jpg", "", 400, 300, "", "");gallery70_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XHCkon12P2.jpg", "", 400, 300, "", "");gallery70_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XYknD8mcgr.jpg", "", 400, 300, "", "");gallery70_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XdMOmX3mXf.jpg", "", 400, 300, "", "");gallery70_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XXbs1nWSzq.jpg", "", 400, 300, "", "");gallery70_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XHgUgb0YaK.jpg", "", 400, 300, "", "");gallery70_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XGTPbLDqfV.jpg", "", 400, 300, "", "");gallery70_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XUz0jbAhbj.jpg", "", 400, 300, "", "");gallery70_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XUQ8PVSDym.jpg", "", 400, 300, "", "");gallery70_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XP4XOw2ggv.jpg", "", 400, 300, "", "");gallery70_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XYQ2ZUxoMy.jpg", "", 400, 300, "", "");gallery70_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XfrihbW59N.jpg", "", 400, 300, "", "");gallery70_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XSW92Thsr9.jpg", "", 400, 300, "", "");gallery70_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XI63uqQDbE.jpg", "", 400, 300, "", "");gallery70_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XYdKjJHUPk.jpg", "", 400, 300, "", "");gallery70_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XN96FXkI7H.jpg", "", 400, 300, "", "");gallery70_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XdaLt4jgQ7.jpg", "", 400, 300, "", "");gallery70_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XDDSd919Ns.jpg", "", 400, 300, "", "");gallery70_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XWJSNAE4yg.jpg", "", 400, 300, "", "");gallery70_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XZw5ftGHXe.jpg", "", 400, 300, "", "");gallery70_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XS0ZwDAL47.jpg", "", 400, 300, "", "");gallery70_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XRaeXLwEj1.jpg", "", 400, 300, "", "");gallery70_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XLFI4KVMT8.jpg", "", 400, 300, "", "");gallery70_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/Xf15rRzjsI.jpg", "", 400, 300, "", "");gallery70_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/Xe94BHijH0.jpg", "", 400, 300, "", "");gallery70_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XC5bTCTL3R.jpg", "", 400, 300, "", "");gallery70_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/Xfa7NKQcgT.jpg", "", 400, 300, "", "");gallery70_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XDWtzZkRT8.jpg", "", 400, 300, "", "");gallery70_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/Xb3yDEURRI.jpg", "", 400, 300, "", "");gallery70_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XWMlnhH0CT.jpg", "", 400, 300, "", "");gallery70_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XEQVslDabG.jpg", "", 400, 300, "", "");gallery70_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/Xb9QJ4hrOu.jpg", "", 400, 300, "", "");gallery70_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XCdMXZGMCd.jpg", "", 400, 300, "", "");gallery70_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XHGkv3R3YT.jpg", "", 400, 300, "", "");gallery70_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XY2HzEzU7E.jpg", "", 400, 300, "", "");gallery70_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XHYrTDleEg.jpg", "", 400, 300, "", "");gallery70_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XQlFOe26c2.jpg", "", 400, 300, "", "");gallery70_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XA4Dz1H7hU.jpg", "", 400, 300, "", "");gallery70_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XHHsQOAeuo.jpg", "", 400, 300, "", "");gallery70_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XSIfnZWW4F.jpg", "", 400, 300, "", "");gallery70_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XAtKaLDZos.jpg", "", 400, 300, "", "");gallery70_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XIcFaOBNe8.jpg", "", 400, 300, "", "");gallery70_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XVtdxYGBst.jpg", "", 400, 300, "", "");gallery70_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XI1mC4VWTO.jpg", "", 400, 300, "", "");gallery70_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XCxnqVgL7c.jpg", "", 400, 300, "", "");gallery70_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XWKoRo1et6.jpg", "", 400, 300, "", "");gallery70_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XWg7xSTE2V.jpg", "", 400, 300, "", "");gallery70_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XXT2HfEIyF.jpg", "", 400, 300, "", "");gallery70_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XfsuLaCSRF.jpg", "", 400, 300, "", "");gallery70_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XG05B9FDRt.jpg", "", 400, 300, "", "");gallery70_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XHDMK8RXA2.jpg", "", 400, 300, "", "");gallery70_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XJOLxW1wet.jpg", "", 400, 300, "", "");      gallery70_0.show();    //]]&gt;  &lt;/script&gt;  &lt;noscript&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XKje8wTb6B.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XPIwVHXW8u.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XNGiLHznPz.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XYKLYxS7iW.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XQoTAi2G7d.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XfelIeVkDm.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XLSjIWRtIx.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XVJRZUk3BY.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XFbZNMGP2p.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XS9X29lgZ2.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XVwJonSD25.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/Xea18Y1RGo.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XHCkon12P2.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XYknD8mcgr.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XdMOmX3mXf.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XXbs1nWSzq.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XHgUgb0YaK.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XGTPbLDqfV.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XUz0jbAhbj.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XUQ8PVSDym.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XP4XOw2ggv.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XYQ2ZUxoMy.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XfrihbW59N.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XSW92Thsr9.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XI63uqQDbE.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XYdKjJHUPk.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XN96FXkI7H.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XdaLt4jgQ7.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XDDSd919Ns.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XWJSNAE4yg.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XZw5ftGHXe.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XS0ZwDAL47.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XRaeXLwEj1.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XLFI4KVMT8.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/Xf15rRzjsI.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/Xe94BHijH0.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XC5bTCTL3R.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/Xfa7NKQcgT.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XDWtzZkRT8.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/Xb3yDEURRI.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XWMlnhH0CT.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XEQVslDabG.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/Xb9QJ4hrOu.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XCdMXZGMCd.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XHGkv3R3YT.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XY2HzEzU7E.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XHYrTDleEg.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XQlFOe26c2.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XA4Dz1H7hU.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XHHsQOAeuo.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XSIfnZWW4F.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XAtKaLDZos.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XIcFaOBNe8.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XVtdxYGBst.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XI1mC4VWTO.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XCxnqVgL7c.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XWKoRo1et6.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XWg7xSTE2V.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XXT2HfEIyF.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XfsuLaCSRF.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XG05B9FDRt.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XHDMK8RXA2.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XJOLxW1wet.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;  &lt;/noscript&gt;&lt;/div&gt;&lt;/P&gt;&lt;P align=center&gt;오늘은 일정이 바빠서 아침 일찍일어나서 새벽예배를 드리고&lt;/P&gt;&lt;P align=center&gt;마사다로 출발하였다. 역시나 이넘의 책의 시간표는 잘 맞지않는것을 &lt;/P&gt;&lt;P align=center&gt;너무나도 이제는 잘알고 있기에 어제 에게드 버스 홈페이지에서&lt;/P&gt;&lt;P align=center&gt;예루살렘 중앙터미널에서 마사다로 가는 시간표와 가격&lt;/P&gt;&lt;P align=center&gt;마사다에서 에일랏으로 가는 시간표와 가격&lt;/P&gt;&lt;P align=center&gt;만약을 대비하여 돌아오는 시간표와 가격을 모두 알아놓았다.&lt;/P&gt;&lt;P align=center&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=center&gt;아침 8시부터 대략 30분간격으로 마사다로 가는 버스.&lt;/P&gt;&lt;P align=center&gt;아침일찍 출발하여 중앙터미널에 도착하니 시작은 7시 50분정도였다.&lt;/P&gt;&lt;P align=center&gt;10분남은건가... 마사다에 가서 사먹는것은 분명 비쌀것이라고 예상했기에&lt;/P&gt;&lt;P align=center&gt;물과 먹을 거리를 샀다. 하지만.. 원하는 핫도그는... 아직 준비중이라고..&lt;/P&gt;&lt;P align=center&gt;8시가 넘었는데 -0- 안판다는 것이다.. 이런 게으른것들..&lt;/P&gt;&lt;P align=center&gt;어쩔수없이 그냥 다른빵을 사서 8시 30분차를 탈려고하였다.&lt;/P&gt;&lt;P align=center&gt;그런데 이넘의 차가 오지않는것이다..&lt;/P&gt;&lt;P align=center&gt;분명 홈페이지에 30분간격으로 있었는데.. 역시 이스라엘 -0-&lt;/P&gt;&lt;P align=center&gt;시간표대로 움직이지 않는다.. 이넘의 나라.. 아우 -0-&lt;/P&gt;&lt;P align=center&gt;9시가 넘어서 버스가 나타났다.&lt;/P&gt;&lt;P align=center&gt;8시차도 없었는지.. 마사다쪽으로 가는 사람은 정말 많았다.. 아.. -0- 미어터진다;;&lt;/P&gt;&lt;P align=center&gt;어쨋든.. 마사다를 가기위해 차를 탔다.&lt;/P&gt;&lt;P align=center&gt;내 옆에는 에.. ANULA이라는 분이 앉았다.&lt;/P&gt;&lt;P align=center&gt;어떻게 알았는지는 이제 다 알듯하다.. 옆에 앉으면 무조건 Hi 인사하고&lt;/P&gt;&lt;P align=center&gt;말부터 건내는거다.. 참... 이넘의 나라 눈만 마주치면 인사한다.&lt;/P&gt;&lt;P align=center&gt;알던 모르던 말이다.. 아!.. 이스라엘사람은 제외..&lt;/P&gt;&lt;P align=center&gt;어쨋든 자신은 텔아비브에 있고 어디로 간다고 했는데.. 기억이 안난다...&lt;/P&gt;&lt;P align=center&gt;이런저런 예기를 하다가 나의 명함을 주고.. 이메일주소를 받았다..&lt;/P&gt;&lt;P align=center&gt;이렇게 하나둘씩 나는 이메일 주소가 늘어가고있다 아직 몇개 안되지만;;&lt;/P&gt;&lt;P align=center&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=center&gt;그렇게 이야기를 나누다보니 나는 마사다에 도착하여 내렸다.&lt;/P&gt;&lt;P align=center&gt;나말고도 6명정도의 외국인이 내렸다. 끼리끼리.. 노는 -0-;&lt;/P&gt;&lt;P align=center&gt;분위기라 그냥 아는체하진 않았다.....;;&lt;/P&gt;&lt;P align=center&gt;아무튼.. 내렸는데 여기 왜이렇게 덥나;; 정말.. 예루살렘과는 비교도 안될정도의 더위다..&lt;/P&gt;&lt;P align=center&gt;햇살이 나의 살을 파고드는거 같다;;&lt;/P&gt;&lt;P align=center&gt;어디인지 모르지만 위에 케이블카선이 보인다.. 또한 왼쪽에는 Guest House가 보이고&lt;/P&gt;&lt;P align=center&gt;케이블카선이 한 건물과 연결되어있다.&lt;/P&gt;&lt;P align=center&gt;어딘지도 모를때는 의심나거나 외국인 따라가는게 상책이다..&lt;/P&gt;&lt;P align=center&gt;오르막길.. 으.. 짐을 최대한 줄였지만 역시나 무거운.. 이 짐..&lt;/P&gt;&lt;P align=center&gt;아무튼 올라가보니 역시 케이블카를 올려주고 마사다를 가기윈한 곳이였다.&lt;/P&gt;&lt;P align=center&gt;음.. 리턴티켓까지 되는것은 67세켈인가;; 하고 돌아오는것이 없는 티켓은&lt;/P&gt;&lt;P align=center&gt;기억안난다.. 너무나 더운 날씨때문에 도저히 내려올 생각이 안들었기때문에 난..&lt;/P&gt;&lt;P align=center&gt;리턴까지 되는것을 샀다..&lt;/P&gt;&lt;P align=center&gt;걸어서 올라가는것은 예전에는 됐지만 지금은 안되는 것 같았다. 사고가 났었다고 한다.&lt;/P&gt;&lt;P align=center&gt;아무튼.. 케이블카를 타고 올라가기 전에 마사다에 대한 정말 짧은 영화를 보여주고&lt;/P&gt;&lt;P align=center&gt;케이블 카를 타고 갔다.&lt;/P&gt;&lt;P align=center&gt;아.. 마사다를 올라가서 이것저것 보는데.. 참.. 로마.. 대단하다는 생각도 들었다..&lt;/P&gt;&lt;P align=center&gt;이.. 절벽과 같은곳을 산하나를 만들다니.. 또한 이곳에서 모두 자결하여 죽었다니..&lt;/P&gt;&lt;P align=center&gt;사진 좀 찍어달라고 하고 싶었는데 왜.. 전부다.. 가이드를 끼고.. 바쁜지.&lt;/P&gt;&lt;P align=center&gt;차마.. 부탁하기 어렵더라.. 그래서 혼자 셀카찍어따 -0-;;&lt;/P&gt;&lt;P align=center&gt;역시 혼자 여행은 이것이 안좋다.. 심심하기도 하고... 자유는 있지만 말이다.&lt;/P&gt;&lt;P align=center&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=center&gt;어쨋든 마사다를 다보고 에일랏으로 가기위해.. 내려와야만 했다..&lt;/P&gt;&lt;P align=center&gt;케이블카를 타고 내려오는데 뱀길을 따라서 걸어서 가는 사람이 있다.. 참 이 더위에&lt;/P&gt;&lt;P align=center&gt;걸어서 내려갈 생각을 하다니 대단하다.. 아니.. 솔직히.. 미친거 아닌가 하는 생각도 든다.&lt;/P&gt;&lt;P align=center&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=center&gt;내려와서 버스정류장에서 기다리는데.. 한참을 기다려도 버스는 오지않는다.&lt;/P&gt;&lt;P align=center&gt;아니 에일랏으로 가는 버스는 절대 오지않는다 ㅠㅠ&lt;/P&gt;&lt;P align=center&gt;기다리면서 세루트 운전기사와도 이런저런 예기를 나누고.. 대략 3시간동안..&lt;/P&gt;&lt;P align=center&gt;그 더운 곳에서 버텨야 했다.. 도중에 참 사람도 많이 바뀌어가면서 이야기를 나누었다.&lt;/P&gt;&lt;P align=center&gt;머.. 그래봤자 나의 짧은 영어 실력으로.. 바디랭기지를 섞어가면서 말해야 했지만 말이다.&lt;/P&gt;&lt;P align=center&gt;하하..&lt;/P&gt;&lt;P align=center&gt;아니 솔직히.. 상대방이 더 나를 이해시키기위해.. 바디랭기지를 하는지도 모르겠다 지금생각해보니..&lt;/P&gt;&lt;P align=center&gt;여행자들은 참 친절한듯하다.. 여행자들만... ;;&lt;/P&gt;&lt;P align=center&gt;어쨋든 한참을 기다리고 나니.. 에일랏으로 가는 버스가 왔다.. 아 -0- 드디어..&lt;/P&gt;&lt;P align=center&gt;버스를 타자마자 잠이 들어버렸다..&lt;/P&gt;&lt;P align=center&gt;도착하니 에일랏.. 밤 6시정도 아마 지났던듯하다.. 자.. 유스호스텔을 찾자!!!&lt;/P&gt;&lt;P align=center&gt;1군데, 2군데.. 3군데.. 다.. 자리가없단다.. 컥..&lt;/P&gt;&lt;P align=center&gt;주위에 호텔, 모텔, 호스텔은 정말 많은데 .. 호스텔은.. 자리가 없단다..&lt;/P&gt;&lt;P align=center&gt;아 노숙해야하나.. 그렇게 한참을 찾아해맸다.. 길도 모르는곳을..&lt;/P&gt;&lt;P align=center&gt;그러다보니 다시 중앙버스터미널로 오게 되었다.&lt;/P&gt;&lt;P align=center&gt;알고보니 내가 간날이 최고로 사람이 많은 주란다.. 에구.. 날을 정해도 난;;&lt;/P&gt;&lt;P align=center&gt;아 어떻하지하고 있는데 한사람이 지나간다.. 혹시 근처에 호스텔있냐고 물어봤다.&lt;/P&gt;&lt;P align=center&gt;근처로 자신도 간다고.. 같이 가자고 해서 따라갔다.. 가다가 자신은 슈퍼마켓에..&lt;/P&gt;&lt;P align=center&gt;나는 앞으로 쭉가다가 오른쪽으로 꺾으면 된다고 해서 그리로 갔다.&lt;/P&gt;&lt;P align=center&gt;헤어지기전에 나에게 가방 조심하라고 한다.. 여기도.. 도둑이 있나보군.. 칫..&lt;/P&gt;&lt;P align=center&gt;그렇게 가다보니.. 한 호스텔이 보인다.. 들어가려고하자 바로 full 한다 --&lt;/P&gt;&lt;P align=center&gt;아.. 증말 ㅠㅠ&lt;/P&gt;&lt;P align=center&gt;다시 돌고 돌다가 중앙버스로 왔다. 시간은 9시가 지났다 해는 다지고 어둡다..&lt;/P&gt;&lt;P align=center&gt;그런데 눈이 보이는 TABA HOSTEL 왜 내가 저걸 못봤지..;;&lt;/P&gt;&lt;P align=center&gt;가보니.. 도미토리 원하냐고 먼저 묻는다.. 오.. -0- 자리 있어요?&lt;/P&gt;&lt;P align=center&gt;하루에 80세켈이란다..&lt;/P&gt;&lt;P align=center&gt;흠.. 시설이.. -0-;;; 머 이런거 따질때가 아니므로.. 알았다고 하고 이틀 지낸다고&lt;/P&gt;&lt;P align=center&gt;하였다.&lt;/P&gt;&lt;P align=center&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=center&gt;다음날 에일랏을 돌아다녔다. 그런데 사진을 보면... 에일랏은 없을꺼다..&lt;/P&gt;&lt;P align=center&gt;왜냐.. 정말 볼거없다 -0- 단지 바다다.. 바다에서 사진찍을수도 없지않는가.. 다 비키니인데;;;&lt;/P&gt;&lt;P align=center&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=center&gt;아 -0-.. 호스텔 찾다가 알게된 친구가 2명있다.. 호객꾼에 의해 100세켈이나 내라고 하는 곳을&lt;/P&gt;&lt;P align=center&gt;갔을때 만난 곳인데.. 머 그곳도 가보았지만 자리없다고 했지만 말이다..&lt;/P&gt;&lt;P align=center&gt;아무튼.. 모라드라는 친구와.. 또한명은 이름 까먹었다;;;&lt;/P&gt;&lt;P align=center&gt;모라드라는 친구는 나사렛에 살고 있다고 한다..&lt;/P&gt;&lt;P align=center&gt;모라드라는 친구가 나에게 숫자 1~10까지 알려주었다.&lt;/P&gt;&lt;P align=center&gt;아랍어, 히브리어, 러시아어던가;; 암튼 3개;; 자꾸 발음하기도 어려운걸 따라하라고 해서&lt;/P&gt;&lt;P align=center&gt;혼났다;; 하지만 지금.. 기억안난다;;&lt;/P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2357933784790449713-5514721846980403192?l=akangels-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akangels-textcube.blogspot.com/feeds/5514721846980403192/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://akangels-textcube.blogspot.com/2009/08/09081618-%EB%A7%88%EC%82%AC%EB%8B%A4%EC%82%AC%ED%95%B4%EA%B7%B8%EB%A6%AC%EA%B3%A0-%EC%97%90%EC%9D%BC%EB%9E%8F.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/5514721846980403192'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/5514721846980403192'/><link rel='alternate' type='text/html' href='http://akangels-textcube.blogspot.com/2009/08/09081618-%EB%A7%88%EC%82%AC%EB%8B%A4%EC%82%AC%ED%95%B4%EA%B7%B8%EB%A6%AC%EA%B3%A0-%EC%97%90%EC%9D%BC%EB%9E%8F.html' title='09/08/16~18 마사다,사해,그리고 에일랏'/><author><name>아크엔젤스</name><uri>http://www.blogger.com/profile/10209348568937169243</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2357933784790449713.post-2962645548505208345</id><published>2009-08-16T03:44:00.000+09:00</published><updated>2011-01-29T19:57:23.465+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Diary'/><category scheme='http://www.blogger.com/atom/ns#' term='여행'/><title type='text'>09/08/15 이스라엘에서 마지막 여행에 대한 준비</title><content type='html'>&lt;P align=center&gt;여기 이스라엘은 금,토요일은 버스가 전혀 다니지 않는다.&lt;/P&gt;&lt;P align=center&gt;내일 일요일에 나는 마사다를 갈것이다.&lt;/P&gt;&lt;P align=center&gt;여기 예루살렘 센트럴버스스테이션에서&lt;/P&gt;&lt;P align=center&gt;오전 8시 첫차로 마사다 가는 버스가 있다.&lt;/P&gt;&lt;P align=center&gt;마사다로 가는것이긴한데 케이블카를 타는 바로 앞에 내려줄지 아니면&lt;/P&gt;&lt;P align=center&gt;또 찾아 해메야할지는 나도 모른다.&lt;/P&gt;&lt;P align=center&gt;아직 한번도 가본적이 없는 곳이기에...&lt;/P&gt;&lt;P align=center&gt;아마도 내일도 수많은 사람들의 도움이 필요할것이다.&lt;/P&gt;&lt;P align=center&gt;주로 위치를 물어보는 질문이겠지만 말이다.&lt;/P&gt;&lt;P align=center&gt;어쨋든 마사다를 보고난후에 에일랏으로 갈예정이다.&lt;/P&gt;&lt;P align=center&gt;아침일찍 가야하는이유는 에일랏까지 가는 시간이 꽤 걸리기때문에...&lt;/P&gt;&lt;P align=center&gt;해가 떨어지기 전에 도착해야한다. 그래야 호스텔을 그나마 찾기가 쉬울것이다.&lt;/P&gt;&lt;P align=center&gt;에일랏에 있는 호스텔은 전부 하이킹을 해야하는 곳인듯하다.. 전부 하이킹 마크가 붙어있다.&lt;/P&gt;&lt;P align=center&gt;쩝...&lt;/P&gt;&lt;P align=center&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=center&gt;저번 북쪽여행의 나의 크나큰 실수를 없애기위해&lt;/P&gt;&lt;P align=center&gt;이번에는 짐을 아주 간단하게 쌌다. 노트북또한 나두고 갈예정이다.&lt;/P&gt;&lt;P align=center&gt;에일랏의 유스호스텔에는 인터넷 되는 곳이 한곳 밖에 없기때문이다.&lt;/P&gt;&lt;P align=center&gt;물론 유스호스텔에 등록되어있는 호스텔중에서지만 말이다.&lt;/P&gt;&lt;P align=center&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=center&gt;어쨋든 잠깐동안의 여행을 할경우에는 노트북이 그리 필요하지 않는 것을 알게되었다.&lt;/P&gt;&lt;P align=center&gt;또한 단지 짐이 라는것을..&lt;/P&gt;&lt;P align=center&gt;긴 여행이라면 아주 유용하게 쓰이게 되겠지만 말이다.&lt;/P&gt;&lt;P align=center&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=center&gt;잘때 입을 나시티1개, 짧은 반바지 1개, 반팔1개, 그리고 만약을 위해 가디건1개.&lt;/P&gt;&lt;P align=center&gt;아마도 남쪽이라 에일랏은 더 더울것이다. 여기 예루살렘과는 비교할수 없을만큼..&lt;/P&gt;&lt;P align=center&gt;그리고 속옷들.. 등등&lt;/P&gt;&lt;P align=center&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=center&gt;마사다에서 지체되는 시간이 오래된다면 난.. 예루살렘으로 돌아와서 하루자고 다시&lt;/P&gt;&lt;P align=center&gt;다음날 아침에 일찍 에일랏으로 가야한다.&lt;/P&gt;&lt;P align=center&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=center&gt;아 그나저나 이넘의 책.. 정말 너무 틀린게 많다..&lt;/P&gt;&lt;P align=center&gt;이스라엘 버스회사사이트를 가서 전부 시간과 번호를 다시 검색해야했다.&lt;/P&gt;&lt;P align=center&gt;이곳을 갔다오면 이제 이스라엘의 여행은 끝이 나겠지..&lt;/P&gt;&lt;P align=center&gt;&amp;nbsp;&lt;/P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2357933784790449713-2962645548505208345?l=akangels-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akangels-textcube.blogspot.com/feeds/2962645548505208345/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://akangels-textcube.blogspot.com/2009/08/090815-%EC%9D%B4%EC%8A%A4%EB%9D%BC%EC%97%98%EC%97%90%EC%84%9C-%EB%A7%88%EC%A7%80%EB%A7%89-%EC%97%AC%ED%96%89%EC%97%90-%EB%8C%80%ED%95%9C-%EC%A4%80%EB%B9%84.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/2962645548505208345'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/2962645548505208345'/><link rel='alternate' type='text/html' href='http://akangels-textcube.blogspot.com/2009/08/090815-%EC%9D%B4%EC%8A%A4%EB%9D%BC%EC%97%98%EC%97%90%EC%84%9C-%EB%A7%88%EC%A7%80%EB%A7%89-%EC%97%AC%ED%96%89%EC%97%90-%EB%8C%80%ED%95%9C-%EC%A4%80%EB%B9%84.html' title='09/08/15 이스라엘에서 마지막 여행에 대한 준비'/><author><name>아크엔젤스</name><uri>http://www.blogger.com/profile/10209348568937169243</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2357933784790449713.post-8897680961581864362</id><published>2009-08-15T06:16:00.000+09:00</published><updated>2011-01-29T19:57:23.292+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Diary'/><title type='text'>I want to my plan</title><content type='html'>&lt;P align=center&gt;I want to my plan.&lt;/P&gt;&lt;P align=center&gt;난 지금 이스라엘에 있다.&lt;/P&gt;&lt;P align=center&gt;처음 이스라엘에 올때의 목적은 키부츠 였다.&lt;/P&gt;&lt;P align=center&gt;하지만 키부츠센터에서는 자리가 없다고만 한다.&lt;/P&gt;&lt;P align=center&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=center&gt;키부츠..&lt;/P&gt;&lt;P align=center&gt;이스라엘에는 200여군데가 넘는 키부츠가 있다. 키부츠라고하면&lt;/P&gt;&lt;P align=center&gt;세계각지의 여러 젊은이들이 모여서 같이 일하며 여러 문화를 접하고 배우고&lt;/P&gt;&lt;P align=center&gt;그런 곳인줄로만 알았다.. 아니 물론 그런 좋은 곳도 있다.&lt;/P&gt;&lt;P align=center&gt;하지만 여기에서 지내면서 알게된것이지만 꼭 그런곳만 있는 것은 아니라는 것을 알게 되었다.&lt;/P&gt;&lt;P align=center&gt;여기서 난 키부츠에 대한 마음이 조금은...&lt;/P&gt;&lt;P align=center&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=center&gt;어차피 키부츠 자리는 현재 계획조차 없는 것이고..&lt;/P&gt;&lt;P align=center&gt;이스라엘을 여행하고자 했다.. 그런데.. 한국에서 가져온 걸어서 이스라엘..&lt;/P&gt;&lt;P align=center&gt;이책을 보고 움직이자니 정말 어처구니 없는 책이였다.&lt;/P&gt;&lt;P align=center&gt;초행길의 사람을 전혀 배려하지 않은 책이다. 또한 오타또한 있어서..&lt;/P&gt;&lt;P align=center&gt;난 여행중에도 이길이 또한 이 버스번호가 맞는지 확인하고 또 확인해야했다.&lt;/P&gt;&lt;P align=center&gt;그러면서 친구도 만들고 외국인과 대화도 많이 하면서&lt;/P&gt;&lt;P align=center&gt;배운것도 많긴 하지만..&lt;/P&gt;&lt;P align=center&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=center&gt;처음계획은 키부츠를 가게되면 거기서 천천히 유럽으로 여행할 준비를 하는것이였다.&lt;/P&gt;&lt;P align=center&gt;영어 공부와 함께..&lt;/P&gt;&lt;P align=center&gt;하지만 키부츠가 틀어지면서 거의 모든것이 틀어진 기분이다.&lt;/P&gt;&lt;P align=center&gt;유럽계획을 짜려고해도 센터에만 틀여박혀서 있을수도 없는 노릇이고&lt;/P&gt;&lt;P align=center&gt;또한 여행하면서 유럽계획을 짜려고 하니 이것 또한 여의치가 않다.&lt;/P&gt;&lt;P align=center&gt;그런데 주위에서는 여기까지 왔으니 요르단도 가라.&lt;/P&gt;&lt;P align=center&gt;이집트도 가라.&lt;/P&gt;&lt;P align=center&gt;어디가 좋더라 어디도 가라.&lt;/P&gt;&lt;P align=center&gt;나에겐 조금의 여유가 필요한데..&lt;/P&gt;&lt;P align=center&gt;맞다.. 다 날 위해서 하시는 말이다.&lt;/P&gt;&lt;P align=center&gt;또한 내가 생각하기에도 여기까지 왔으니 이곳저곳 가보는게 정상일지도 모른다.&lt;/P&gt;&lt;P align=center&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=center&gt;그런데 난 준비가 되어있지않다.&lt;/P&gt;&lt;P align=center&gt;마음의 준비, 또한 여행의 준비&lt;/P&gt;&lt;P align=center&gt;지금 그냥 에라모르겠다식으로 여러곳을 가게된다면 과연 내가 얻는것은 무엇일까?&lt;/P&gt;&lt;P align=center&gt;난 그 나라에 대해 아는것도 사전지식도 그 무엇도 없는데..&lt;/P&gt;&lt;P align=center&gt;이대로 그냥 간다면 무엇을 보아야 할지 조차 모른다.&lt;/P&gt;&lt;P align=center&gt;또한 무엇을 보고싶을지도 잘 모르겠다.&lt;/P&gt;&lt;P align=center&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=center&gt;그래서 난 귀국하려고 결심하였다.&lt;/P&gt;&lt;P align=center&gt;이것이 잘못된 결정일지도 모른다. 하지만 후회는 하지 않을것이다.&lt;/P&gt;&lt;P align=center&gt;왜냐하면 내가 결정한 일이기 때문이다.&lt;/P&gt;&lt;P align=center&gt;...&lt;/P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2357933784790449713-8897680961581864362?l=akangels-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akangels-textcube.blogspot.com/feeds/8897680961581864362/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://akangels-textcube.blogspot.com/2009/08/i-want-to-my-plan.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/8897680961581864362'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/8897680961581864362'/><link rel='alternate' type='text/html' href='http://akangels-textcube.blogspot.com/2009/08/i-want-to-my-plan.html' title='I want to my plan'/><author><name>아크엔젤스</name><uri>http://www.blogger.com/profile/10209348568937169243</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2357933784790449713.post-2741397500892816682</id><published>2009-08-15T05:19:00.000+09:00</published><updated>2011-01-29T19:57:23.216+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Diary'/><category scheme='http://www.blogger.com/atom/ns#' term='여행'/><title type='text'>09/08/14 Olives Mount</title><content type='html'>&lt;P align=center&gt;오늘은 감란산을 다녀왔다.&lt;/P&gt;&lt;P align=center&gt;또한 수카(?) 수캇(?) 암튼 그곳을 갔다오고&lt;/P&gt;&lt;P align=center&gt;레베카와 오늘만난 이름모르는 또한 어디사람인지도 모르는 친구에게 메일을 보냈다.&lt;/P&gt;&lt;P align=center&gt;말도안되는 영어 작문일지는 모르지만.. 아무튼 했다;;&lt;/P&gt;&lt;P align=center&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=center&gt;마.. 어쩌구 까페에서 사모님과 준일이를 만나기로 했다.&lt;/P&gt;&lt;P align=center&gt;히브리대학은 버스만 타고 갔었고 까페는 밤 어두울때 전도사님과 갔었기에.. 길은 몰랐지만..&lt;/P&gt;&lt;P align=center&gt;걸어가면서 여러사람에게 물어봐서 갔다.&lt;/P&gt;&lt;P align=center&gt;금요일이라서 그런지 사람이 별로 없어서 힘들긴 했지만..&lt;/P&gt;&lt;P align=center&gt;그래도 빨리 찾을수 있었다.&lt;/P&gt;&lt;P align=center&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=center&gt;그렇게 만난후 우리는 감란산으로 항하였다. 하지만..&lt;/P&gt;&lt;P align=center&gt;우리중 그 누구도 감란산의 위치를 알지 못하였다.. 재은이가 같이 오는지 알았는데 그게 아니였나보다.&lt;/P&gt;&lt;P align=center&gt;지도도 안챙겨 나왔는데... 하핫..&lt;/P&gt;&lt;P align=center&gt;여러사람에게 길을 물어가면서 힘들게 걸어 가야만 했다.&lt;/P&gt;&lt;P align=center&gt;밤에 갔을때는 전혀 못봤던 가게들이 보이기 시작했다...&lt;/P&gt;&lt;P align=center&gt;여긴 대체 어디지.. 처음 가보는 곳이였다. 아랍지역.. 인듯했다.&lt;/P&gt;&lt;P align=center&gt;아 -0-... 전에는 어둡고 위험하기도 해서 아랍지역을 돌아서 가서 가게가 안나왔었나부다..&lt;/P&gt;&lt;P align=center&gt;우린 정말 맵이 필요했다..&lt;/P&gt;&lt;P align=center&gt;그런데 내 눈에 보이는 여행중인 외국인 4분..&lt;/P&gt;&lt;P align=center&gt;저분들에게 맵좀.. 보여달라고 해야겠다하고.. 말을 걸었다.&lt;/P&gt;&lt;P align=center&gt;어디가세요? 올드 시티 간단다..&lt;/P&gt;&lt;P align=center&gt;쳇.. ㅠ&lt;/P&gt;&lt;P align=center&gt;맵좀 볼수 있을까 해서.. 머라고 했는지 잘 기억은 안나지만..&lt;/P&gt;&lt;P align=center&gt;맵이 없다 맵을 보길 원한다 머 이런내용이였던듯 하다.. 내가 말하고도 기억이 안나네;;&lt;/P&gt;&lt;P align=center&gt;암튼 그랬더니.. 맵을 그냥 준다.. 이분들 -0-;;&lt;/P&gt;&lt;P align=center&gt;아.. 덕분에.. 길을 찾기가 쉬워졌다..&lt;/P&gt;&lt;P align=center&gt;난.. 이때를 살려서.. 나의 명함을 주고 메일을 받아냈다..&lt;/P&gt;&lt;P align=center&gt;그렇게 몇마디 나누고 헤어진뒤에 맵을 보고 이동하기 시작하였다..&lt;/P&gt;&lt;P align=center&gt;맵을 이용하여 여기저기 물어보니 전부다.. 문을 닫았단다..&lt;/P&gt;&lt;P align=center&gt;아.. 여기 12시되면 문닫지;; 이런....&lt;/P&gt;&lt;P align=center&gt;결국은 오늘은 교회한군데도 들러보진 못하였다.. 하지만 좋은 경험은 한듯 했다.&lt;/P&gt;&lt;P align=center&gt;이리하여... 감란산에서 내려와서 올드시티를 통해서 버스를 타고 시내로 갔다.&lt;/P&gt;&lt;P align=center&gt;맥도널드에서 햄버거를 먹은후에..&lt;/P&gt;&lt;P align=center&gt;센터로 돌아왔다.. 돌아오니.. 수카인가; 가는데 같이 가자고 하신다.. 이런.. 힘든데;;&lt;/P&gt;&lt;P align=center&gt;언제 한번 가보겠냐고.. 해서.. 같이 갔다...&lt;/P&gt;&lt;P align=center&gt;기도회를 하는데... 나름 괜찮았다.&lt;/P&gt;&lt;P align=center&gt;끝난뒤에.. 성엽이와 나는 걸어서 센터로 왔다.&lt;/P&gt;&lt;P align=center&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=center&gt;돌아와서 레베카와 오늘 맵을 준 친구에게 고맙다고 덕분에 많은 도움이 됐고&lt;/P&gt;&lt;P align=center&gt;친구되길 원한다고 머 그런내용의 메일을 보냈다.&lt;/P&gt;&lt;P align=center&gt;이렇게 오늘 하루도...&lt;/P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2357933784790449713-2741397500892816682?l=akangels-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akangels-textcube.blogspot.com/feeds/2741397500892816682/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://akangels-textcube.blogspot.com/2009/08/090814-olives-mount.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/2741397500892816682'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/2741397500892816682'/><link rel='alternate' type='text/html' href='http://akangels-textcube.blogspot.com/2009/08/090814-olives-mount.html' title='09/08/14 Olives Mount'/><author><name>아크엔젤스</name><uri>http://www.blogger.com/profile/10209348568937169243</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2357933784790449713.post-6688584065698829591</id><published>2009-08-13T23:18:00.000+09:00</published><updated>2011-01-29T19:57:23.127+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Diary'/><category scheme='http://www.blogger.com/atom/ns#' term='여행'/><title type='text'>09/08/13 야드바쉠</title><content type='html'>&lt;script src='http://ss.textcube.com/service/blog/script/blogger.js' type='text/javascript'&gt;&lt;/script&gt;&lt;P&gt;&lt;div id="tt-gallery-66-0" class="tt-gallery-box" style="text-align: center; clear: both;"&gt;  &lt;script type="text/javascript"&gt;    //&lt;![CDATA[      var gallery66_0 = new TC$PRIV_TTGallery("tt-gallery-66-0");      gallery66_0.prevText = "이전 이미지 보기 버튼";       gallery66_0.nextText = "다음 이미지 보기 버튼";       gallery66_0.enlargeText = "원본 크기로 보기 버튼";       gallery66_0.altText = "갤러리 이미지"; gallery66_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XLWIGLjt6c.jpg", "", 400, 300, "", "");gallery66_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XNS8eKxfh9.jpg", "", 400, 300, "", "");gallery66_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XaoW72X4TH.jpg", "", 400, 300, "", "");gallery66_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XIgCefirzu.jpg", "", 400, 300, "", "");gallery66_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XVG4dBFlpW.jpg", "", 400, 300, "", "");gallery66_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XcjP9rRIpa.jpg", "", 400, 300, "", "");gallery66_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XdFAX8wWNy.jpg", "", 400, 300, "", "");gallery66_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XdH9AN1Pxu.jpg", "", 400, 300, "", "");gallery66_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XTaaZPyBhj.jpg", "", 400, 300, "", "");gallery66_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XNKOCBUxBF.jpg", "", 400, 300, "", "");gallery66_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XFi3DDAmVP.jpg", "", 400, 300, "", "");gallery66_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XKlxY6yOkb.jpg", "", 400, 300, "", "");gallery66_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XGtBzfVYuU.jpg", "", 400, 300, "", "");gallery66_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XbcN28nLgc.jpg", "", 400, 300, "", "");gallery66_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XTNtO7Qgfd.jpg", "", 400, 300, "", "");gallery66_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XZVVe8hx5v.jpg", "", 400, 300, "", "");gallery66_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XRzUUaTlSV.jpg", "", 400, 300, "", "");gallery66_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/Xf01JW3f11.jpg", "", 400, 300, "", "");gallery66_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XRcxMkQDol.jpg", "", 400, 300, "", "");gallery66_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XTnGyeU3uS.jpg", "", 400, 300, "", "");gallery66_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XF9xbFlqeT.jpg", "", 400, 300, "", "");gallery66_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XaLOtsUxOJ.jpg", "", 400, 300, "", "");      gallery66_0.show();    //]]&gt;  &lt;/script&gt;  &lt;noscript&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XLWIGLjt6c.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XNS8eKxfh9.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XaoW72X4TH.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XIgCefirzu.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XVG4dBFlpW.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XcjP9rRIpa.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XdFAX8wWNy.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XdH9AN1Pxu.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XTaaZPyBhj.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XNKOCBUxBF.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XFi3DDAmVP.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XKlxY6yOkb.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XGtBzfVYuU.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XbcN28nLgc.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XTNtO7Qgfd.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XZVVe8hx5v.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XRzUUaTlSV.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/Xf01JW3f11.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XRcxMkQDol.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XTnGyeU3uS.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XF9xbFlqeT.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XaLOtsUxOJ.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;  &lt;/noscript&gt;&lt;/div&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=center&gt;오늘은 야드바쉠을 다녀왔다. 마음같아선 센터를 나와 오늘도 여행을 가고싶지만&lt;/P&gt;&lt;P align=center&gt;교회는 가야겠고... 요일은 목요일이라.. 그냥 하루만에 갔다올수있는 곳을 선택하였다.&lt;/P&gt;&lt;P align=center&gt;Franch Hill에서 야드바셈까지 다이렉트로 가는 버스는 없는듯하다.&lt;/P&gt;&lt;P align=center&gt;뭐.. 내가 다 아는것은 아니므로 있을지도 모르지만..&lt;/P&gt;&lt;P align=center&gt;어쨌든 나는 센트럴버스스테이션으로 가서 거기서 야드바셈으로 가는 버스를&lt;/P&gt;&lt;P align=center&gt;타고 갔다. 그런데.. 한국에서 사온 걸어서 이스라엘 이란 이책..&lt;/P&gt;&lt;P align=center&gt;아무리 생각해도 오타도 있고 정말.. 이스라엘에 대해서 아는사람이 쓴것인가&lt;/P&gt;&lt;P align=center&gt;하는 생각이 들때가 많다.&lt;/P&gt;&lt;P align=center&gt;일단 맵부터 구글맵이다.. 어이가 없다.. 이맵으로는 도저히 길을 찾을수가 없다.&lt;/P&gt;&lt;P align=center&gt;지극히 단순한 맵이기때문이다. 또한 동서남북도 알수가 없다.&lt;/P&gt;&lt;P align=center&gt;어딘가의 지명에 대해서 가는방법과 버스 번호가 나와있지만.. 그것 또한&lt;/P&gt;&lt;P align=center&gt;틀린것이 많다. 오늘도 야드바쉠을 가기위해 운전기사의 지식을 빌려야만했다.&lt;/P&gt;&lt;P align=center&gt;참... 이스라엘와서 물어보기는 무쟈게 물어보고 다니는 듯하다..&lt;/P&gt;&lt;P align=center&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=center&gt;한번 안물어보고 버스를 탔다가 반대방향으로 간기억이 있어서인지&lt;/P&gt;&lt;P align=center&gt;일단 버스를 타기전에 무조건 지명부터 말하고 있다. 말할때마다&lt;/P&gt;&lt;P align=center&gt;나의 발음때문에 잘 못알아듣게되면 나의 지명을 적어놓은 책을 보여주곤 한다.&lt;/P&gt;&lt;P align=center&gt;다행히 야드바쉠을 잘 알아듣더라..;; 쩝..&lt;/P&gt;&lt;P align=center&gt;그렇게 야드바쉠 근처에 도착하고 나서 대략 500m를 걸어야했다.&lt;/P&gt;&lt;P align=center&gt;외국인 몇분들이 걸어가고있더라..&lt;/P&gt;&lt;P align=center&gt;유스호스텔에서 외국인만 보면 일단 Hi하는 습관이 생겨서일까..&lt;/P&gt;&lt;P align=center&gt;외국인이 보이면 그냥 Hi한다.. 그럼.. 대꾸는 잘해준다 단지 인사일뿐이지만&lt;/P&gt;&lt;P align=center&gt;외국인이 이젠 무섭지 않다.. 울렁증 그런거.. 없다.. 단지.. 내 마음을 전달하지 못할때가&lt;/P&gt;&lt;P align=center&gt;정말 답답할뿐.. 바디랭기지로도 한계가.. 있어서..&lt;/P&gt;&lt;P align=center&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=center&gt;어쨋든 야드바쉠안에 들가는데 샬롬하고 경비원 아저씨가 한다..&lt;/P&gt;&lt;P align=center&gt;샬롬... 안녕하세요.. 이건안다;; 히브리어.. 암튼.. 히브리어 젤 알아듣기 쉬운게&lt;/P&gt;&lt;P align=center&gt;켄, 샬룸;; 나머진 모르겠다.. &lt;/P&gt;&lt;P align=center&gt;어디서 왔는지 물었었는지는 못들었는데.. 암튼 나보고 이번엔 차이니스한다;;&lt;/P&gt;&lt;P align=center&gt;이넘의 차이나 제팬 그만좀 듣자.. 코리아 단한번도 안한다 -0-;;&lt;/P&gt;&lt;P align=center&gt;from Korea.&lt;/P&gt;&lt;P align=center&gt;아무튼 이렇게 외치고 들어갔다.&lt;/P&gt;&lt;P align=center&gt;처음 들어선 건물에&lt;/P&gt;&lt;P align=center&gt;들어가니 information , 에또.. 맵 파는곳, 에또... 헤드폰 빌려주는곳..&lt;/P&gt;&lt;P align=center&gt;에.. 무슨 해드폰 하나 빌리는데 저렇게 비싸;; 그냥 안비릴고 말지 하고 지나쳤다..&lt;/P&gt;&lt;P align=center&gt;그런데 맵은 좀 필요할듯해서 하나 살까했는데 10세켈이나 한다..&lt;/P&gt;&lt;P align=center&gt;이런. -0- 무슨 맵하나를 3처넌넘게 받아먹는 나리가 있단말인가... 단지 맵인데;;&lt;/P&gt;&lt;P align=center&gt;그래도 사고싶어서;; 사긴했다...&lt;/P&gt;&lt;P align=center&gt;맵을 들고 이제 전시관인가;; Main인가; 암튼 들어가는데 경비아저씨가 나를 막는다..&lt;/P&gt;&lt;P align=center&gt;왜!!!!&lt;/P&gt;&lt;P align=center&gt;말 무쟈게 빨리한다.. 아 알아듣기 힘들게 이것이..;;&lt;/P&gt;&lt;P align=center&gt;첨에 검문하는건가 했는데 그건아니고.. 다시 말해달라고 하니..&lt;/P&gt;&lt;P align=center&gt;좀 천천히 해준다.. 아.. 큰가방은 맡기란다.. 그것도 방금 지나온 건물의 지하에다가..&lt;/P&gt;&lt;P align=center&gt;이.. 그런건 진작에 표지판이라도 만들어서 나둘것이지.. 할수 없이 난 다시 돌아가서 가방을 &lt;/P&gt;&lt;P align=center&gt;맡겨야만 했다.&lt;/P&gt;&lt;P align=center&gt;그리고 나서 다시 들어가는데 이번에는 사진을 찍지말란다 -0-&lt;/P&gt;&lt;P align=center&gt;단 나가서는 찍어도 된다고 한다..&lt;/P&gt;&lt;P align=center&gt;어쨋든 안을 들어가니 온갖나라의 언어로... 영화(?)를 보여준다 근데..&lt;/P&gt;&lt;P align=center&gt;여기 왜이렇게 사람이 많나.. 아.. 길이 막혀서 내가 볼것도 못본다.. 아놔;;&lt;/P&gt;&lt;P align=center&gt;투어하는사람이 많아서 그런듯한데.. 끼어서 들어볼까도 했는데 영어가 아니다..&lt;/P&gt;&lt;P align=center&gt;어디나라말인지 원.. 아무튼..&lt;/P&gt;&lt;P align=center&gt;천천히 감상하면서 한참을 보고나서야 건물을 나오게 되었다.. 아 땡볕..&lt;/P&gt;&lt;P align=center&gt;맵을 보고 이것저것 보는데.. 솔직히 나는 머가 먼지 잘은 모르겠다. 단지 대충만 알수있을뿐..&lt;/P&gt;&lt;P align=center&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=center&gt;낮 3시가 다가왔다.. 아 배고프다.. 근데 -0- 여기 왜이렇게 비싸나..;;&lt;/P&gt;&lt;P align=center&gt;비싸도 넘 비싸다는 생각에.. 싸온 빵과 물을 마시며 일단 배고픈걸 해결하고...&lt;/P&gt;&lt;P align=center&gt;나는 다시 센트럴버스에 가서 점심을 먹어야했다..&lt;/P&gt;&lt;P align=center&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=center&gt;그리고 난후.. 나는 Franch Hill로 다시 돌아왔다.. 바로 센터로 들어가지않고 센터 뒤에&lt;/P&gt;&lt;P align=center&gt;작은 공원에 가서 머리도 식히고 책을 보았다..&lt;/P&gt;&lt;P align=center&gt;그렇게 오늘 하루를 보냈다.&lt;/P&gt;&lt;P align=center&gt;내일은 감란산을 혼자서 갔다와봐야겠다..&lt;/P&gt;&lt;P align=center&gt;일요일에는 마사다를.. 월화수는 여행을 갔다와야겠는데 어딜갈까나..&lt;/P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2357933784790449713-6688584065698829591?l=akangels-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akangels-textcube.blogspot.com/feeds/6688584065698829591/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://akangels-textcube.blogspot.com/2009/08/090813-%EC%95%BC%EB%93%9C%EB%B0%94%EC%89%A0.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/6688584065698829591'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/6688584065698829591'/><link rel='alternate' type='text/html' href='http://akangels-textcube.blogspot.com/2009/08/090813-%EC%95%BC%EB%93%9C%EB%B0%94%EC%89%A0.html' title='09/08/13 야드바쉠'/><author><name>아크엔젤스</name><uri>http://www.blogger.com/profile/10209348568937169243</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2357933784790449713.post-1346514216047840260</id><published>2009-08-13T01:38:00.000+09:00</published><updated>2011-01-29T19:57:22.945+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Diary'/><category scheme='http://www.blogger.com/atom/ns#' term='여행'/><title type='text'>09/08/12 만남과 헤어짐</title><content type='html'>&lt;script src='http://ss.textcube.com/service/blog/script/blogger.js' type='text/javascript'&gt;&lt;/script&gt;&lt;P&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XKT7Xak0T3.jpg" style="width:500px;height:666px;" alt="" onclick="TC$PRIV_open_img('http://ss.textcube.com/blog/1/10879/attach/XKT7Xak0T3.jpg')" /&gt;&lt;/div&gt;&lt;/P&gt;&lt;P align=center&gt;나사렛에서 프랑스 친구 Ben과 함께 정한 숙소에서 만난 친구인 얀이다. 맞나(?) 하두 발음이 어려워서;;&lt;/P&gt;&lt;P align=center&gt;일단 여기 나사렛의 호스텔인 Fauzi azar Inn 호스텔이라는 곳인데..&lt;/P&gt;&lt;P align=center&gt;정말 추천해주고 싶을정도로 좋다.. 서비스도 좋고 쿠키, 커피, 우유 등.. 공짜다..&lt;/P&gt;&lt;P align=center&gt;가격도 70세켈이다.. 물론 도미토리 요금이다. 현재 70세켈이면 괜찮은 가격이다.&lt;/P&gt;&lt;P align=center&gt;단지 조금.. 문제(?) 라면 무거운 짐을 들고 하이킹..을 해야하는 단점이 있다.&lt;/P&gt;&lt;P align=center&gt;많이 하는건 아니니 걱정할건 없다.&lt;/P&gt;&lt;P align=center&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=center&gt;여기에서 만난 친구 얀과 찍은 사진.&lt;/P&gt;&lt;P align=center&gt;얀 역시도 나와 비슷하게 자신의 북에 내가준 카드의 내용을 적는다..&lt;/P&gt;&lt;P align=center&gt;물론 나도 나의 북에 이메일 이름을 적어달라고 했다.. 그런데..&lt;/P&gt;&lt;P align=center&gt;이거 영어는 영어인데 너무 휘갈려써서.. 스펠링을 잘 모르겠다.&lt;/P&gt;&lt;P align=center&gt;아차 참고로 이 사진은 밤에찍은사진 즉.. 11일날 찍은 사진이다.&lt;/P&gt;&lt;P align=center&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=center&gt;오늘은 예루살렘교회의 센터로 돌아와야만 했다.&lt;/P&gt;&lt;P align=center&gt;역시 나는 아직 초보여행자인지 쓸대없는 것은 잔뜩 챙기고,&lt;/P&gt;&lt;P align=center&gt;정작 필요한것은 챙기지 않았다.. 그래서.. 다시 돌아와야만 했다.&lt;/P&gt;&lt;P align=center&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=center&gt;호스텔에서 나올때 Ben과 만나지 못하여 쪽지를 남겼다.&lt;/P&gt;&lt;P align=center&gt;만나는 동안 즐거웠고 나중에 만약 기회가 된다면 다시 만나자는 내용의 메시지를&lt;/P&gt;&lt;P align=center&gt;스텝에게 벤에게 전해달라고 부탁하였다..&lt;/P&gt;&lt;P align=center&gt;아마도 없을듯하다..&lt;/P&gt;&lt;P align=center&gt;프랑스 친구 벤 정말 친절하고 매너가 좋았다.&lt;/P&gt;&lt;P align=center&gt;같이 여행을 하는동안 하나부터 열까지 나의 의사를 물어보았다.&lt;/P&gt;&lt;P align=center&gt;그렇게 헤어지고 난뒤...&lt;/P&gt;&lt;P align=center&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=center&gt;나사렛에서 예루살렘으로 바로 가는 버스가 있는지 또 어디서 타야하는지 알아야 했기에&lt;/P&gt;&lt;P align=center&gt;나사렛의 informaiton center에 들려서 물어봤다.&lt;/P&gt;&lt;P align=center&gt;그런데 당췌.. 이사람 머라고 하는지 모르겠다..&lt;/P&gt;&lt;P align=center&gt;그래서 그냥 내가 필요한것을 질문하였다.&lt;/P&gt;&lt;P align=center&gt;다이렉트로 가는 버스가 있느냐..&lt;/P&gt;&lt;P align=center&gt;대답은 예상했지만 No였다.&lt;/P&gt;&lt;P align=center&gt;그래서 혹시 티베리아로 가서 티베리아에서 가는 버스는 있느냐고 했더니&lt;/P&gt;&lt;P align=center&gt;있다고 한다.. 그러면서 431번인가 432번버스라고 한다.&lt;/P&gt;&lt;P align=center&gt;얻을 정보는 얻었고해서.. 버스 타는곳으로 갔다.&lt;/P&gt;&lt;P align=center&gt;한참을 기다리고 나서 버스를 타고 티베리아로 갔다.&lt;/P&gt;&lt;P align=center&gt;사실 하이파로 가도 되지만.. 그냥 티베리아로 갔다 왜인지는 나도 모르겠다.&lt;/P&gt;&lt;P align=center&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=center&gt;티베리아에서 예루살렘으로 고고..&lt;/P&gt;&lt;P align=center&gt;오면서 이스라엘의 횡당보도가 이상하여 찍은것이다..&lt;/P&gt;&lt;P align=center&gt;거의 모든 횡단보도는 사진과 같다.&lt;/P&gt;&lt;P align=center&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XUgqb9n6pd.jpg" style="width:500px;height:375px;" alt="" onclick="TC$PRIV_open_img('http://ss.textcube.com/blog/1/10879/attach/XUgqb9n6pd.jpg')" /&gt;&lt;/div&gt;&lt;/P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2357933784790449713-1346514216047840260?l=akangels-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akangels-textcube.blogspot.com/feeds/1346514216047840260/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://akangels-textcube.blogspot.com/2009/08/090812-%EB%A7%8C%EB%82%A8%EA%B3%BC-%ED%97%A4%EC%96%B4%EC%A7%90.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/1346514216047840260'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/1346514216047840260'/><link rel='alternate' type='text/html' href='http://akangels-textcube.blogspot.com/2009/08/090812-%EB%A7%8C%EB%82%A8%EA%B3%BC-%ED%97%A4%EC%96%B4%EC%A7%90.html' title='09/08/12 만남과 헤어짐'/><author><name>아크엔젤스</name><uri>http://www.blogger.com/profile/10209348568937169243</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2357933784790449713.post-1255737368789117651</id><published>2009-08-11T23:44:00.000+09:00</published><updated>2011-01-29T19:57:22.794+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Diary'/><category scheme='http://www.blogger.com/atom/ns#' term='여행'/><title type='text'>09/08/11 나사렛</title><content type='html'>&lt;script src='http://ss.textcube.com/service/blog/script/blogger.js' type='text/javascript'&gt;&lt;/script&gt;&lt;P&gt;&lt;div id="tt-gallery-64-0" class="tt-gallery-box" style="text-align: center; clear: both;"&gt;  &lt;script type="text/javascript"&gt;    //&lt;![CDATA[      var gallery64_0 = new TC$PRIV_TTGallery("tt-gallery-64-0");      gallery64_0.prevText = "이전 이미지 보기 버튼";       gallery64_0.nextText = "다음 이미지 보기 버튼";       gallery64_0.enlargeText = "원본 크기로 보기 버튼";       gallery64_0.altText = "갤러리 이미지"; gallery64_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XWgNDbGX3M.jpg", "", 400, 300, "", "");gallery64_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XBvfLyn7GP.jpg", "", 400, 300, "", "");gallery64_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XHbY1wR1Hc.jpg", "", 400, 300, "", "");gallery64_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XZC7nBkOc8.jpg", "", 400, 300, "", "");gallery64_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XBLKAEAUz9.jpg", "", 400, 300, "", "");gallery64_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XEshYrUaFF.jpg", "", 400, 300, "", "");gallery64_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/Xdp2nTkV1l.jpg", "", 400, 300, "", "");gallery64_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XeOo8wV23f.jpg", "", 400, 300, "", "");gallery64_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XXb4BHlRgA.jpg", "", 400, 300, "", "");gallery64_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XXr3dwmmUY.jpg", "", 400, 300, "", "");gallery64_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XbaKbIEIzv.jpg", "", 400, 300, "", "");gallery64_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XdBBnmXiaD.jpg", "", 400, 300, "", "");gallery64_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XApZwvwjeP.jpg", "", 400, 300, "", "");gallery64_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XY232xUNb8.jpg", "", 400, 300, "", "");gallery64_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XRA5ldHB0r.jpg", "", 400, 300, "", "");gallery64_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XN0hKlyQAq.jpg", "", 400, 300, "", "");gallery64_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XWEZzaS2Gq.jpg", "", 400, 300, "", "");      gallery64_0.show();    //]]&gt;  &lt;/script&gt;  &lt;noscript&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XWgNDbGX3M.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XBvfLyn7GP.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XHbY1wR1Hc.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XZC7nBkOc8.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XBLKAEAUz9.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XEshYrUaFF.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/Xdp2nTkV1l.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XeOo8wV23f.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XXb4BHlRgA.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XXr3dwmmUY.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XbaKbIEIzv.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XdBBnmXiaD.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XApZwvwjeP.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XY232xUNb8.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XRA5ldHB0r.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XN0hKlyQAq.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XWEZzaS2Gq.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;  &lt;/noscript&gt;&lt;/div&gt;&lt;/P&gt;&lt;P align=center&gt;교회안에서 벤이 찍어준 사진인데.. 어두워서..&lt;/P&gt;&lt;P align=center&gt;뒤는 잘 안보인다..&lt;/P&gt;&lt;P align=center&gt;하지만 벤의 카메라는 뒤까지 잘 보인다..&lt;/P&gt;&lt;P align=center&gt;그래서 내가.. 내 카메라 싼거라고 했더니.. 벤은 자기껀 비싼거라고 아주 비싼거라고 한다..&lt;/P&gt;&lt;P align=center&gt;아무튼...&lt;/P&gt;&lt;P align=center&gt;수태어쩌구 교회인데 ㅠㅠ 아.. 이넘의 메모리.. 왜이래;;&lt;/P&gt;&lt;P align=center&gt;벤은 자신은 기도를 아주 오랫동안 해야한다고 한다.&lt;/P&gt;&lt;P align=center&gt;그래서 난.. 오늘 갈려고 했던 수태어쩌구 교호 뒤에 있는 교회와..&lt;/P&gt;&lt;P align=center&gt;예수님이 어렸을때 설교했다는 이름은 까먹었지만. 암튼 작은 교회..를&lt;/P&gt;&lt;P align=center&gt;갔다..&lt;/P&gt;&lt;P align=center&gt;이넘의 교회 하나 찾는데 정말 하루종일 해멧다.&lt;/P&gt;&lt;P align=center&gt;무슨놈의 길이 정말 미로다.. 좁고 여기저기 크로스에..&lt;/P&gt;&lt;P align=center&gt;한 20명에게 물어봤다..&lt;/P&gt;&lt;P align=center&gt;겨우겨우해서 예수님이 어렸을적 설교하였다는 곳을 찾았다.&lt;/P&gt;&lt;P align=center&gt;정말 작은 곳이였다..&lt;/P&gt;&lt;P align=center&gt;내일은 예루살렘으로 돌아가야겠다..&lt;/P&gt;&lt;P align=center&gt;핸드폰 잭을 안챙겨와서.. 핸드폰 배터리가 1칸도 안남았다..&lt;/P&gt;&lt;P align=center&gt;또한.. 속옷도 많이 안챙겨서..;;;&lt;/P&gt;&lt;P align=center&gt;쓸대없이 무겁게 옷만 잔뜩 넣은듯하다.. -0-&lt;/P&gt;&lt;P align=center&gt;옷은 그냥 빨아서 말리면되더라.. 여행해보니. 한 2~3벌만있어도 충분하게따 --&lt;/P&gt;&lt;P align=center&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=center&gt;오늘은 그래도 호스텔에 일찍와서... 이렇게&lt;/P&gt;&lt;P align=center&gt;밀린 다이어리와 정리할것들을 하고 있다.&lt;/P&gt;&lt;P align=center&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=center&gt;또한 외국인들과 여담을 나누고 있다..&lt;/P&gt;&lt;P align=center&gt;머.. 말이 잘 통하는건 아니지만 말이다..&lt;/P&gt;&lt;P align=center&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=center&gt;&amp;nbsp;&lt;/P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2357933784790449713-1255737368789117651?l=akangels-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akangels-textcube.blogspot.com/feeds/1255737368789117651/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://akangels-textcube.blogspot.com/2009/08/090811-%EB%82%98%EC%82%AC%EB%A0%9B.html#comment-form' title='1개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/1255737368789117651'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/1255737368789117651'/><link rel='alternate' type='text/html' href='http://akangels-textcube.blogspot.com/2009/08/090811-%EB%82%98%EC%82%AC%EB%A0%9B.html' title='09/08/11 나사렛'/><author><name>아크엔젤스</name><uri>http://www.blogger.com/profile/10209348568937169243</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2357933784790449713.post-2487816295984609998</id><published>2009-08-11T23:28:00.000+09:00</published><updated>2011-01-29T19:57:22.651+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Diary'/><category scheme='http://www.blogger.com/atom/ns#' term='여행'/><title type='text'>09/08/10 타브하</title><content type='html'>&lt;script src='http://ss.textcube.com/service/blog/script/blogger.js' type='text/javascript'&gt;&lt;/script&gt;&lt;div id="tt-gallery-63-0" class="tt-gallery-box" style="text-align: center; clear: both;"&gt;  &lt;script type="text/javascript"&gt;    //&lt;![CDATA[      var gallery63_0 = new TC$PRIV_TTGallery("tt-gallery-63-0");      gallery63_0.prevText = "이전 이미지 보기 버튼";       gallery63_0.nextText = "다음 이미지 보기 버튼";       gallery63_0.enlargeText = "원본 크기로 보기 버튼";       gallery63_0.altText = "갤러리 이미지"; gallery63_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XWQDbaXYKK.jpg", "", 400, 300, "", "");gallery63_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XNf83Ii3pq.jpg", "", 400, 300, "", "");gallery63_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XfscAaVcKz.jpg", "", 400, 300, "", "");gallery63_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XXbQvjCegZ.jpg", "", 400, 300, "", "");gallery63_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XJzRnZ1bAY.jpg", "", 400, 300, "", "");gallery63_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XbZ307hQu1.jpg", "", 400, 300, "", "");gallery63_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XbYBv8DZVP.jpg", "", 400, 300, "", "");gallery63_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XZzUg4xYfA.jpg", "", 400, 300, "", "");gallery63_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XPGbqaSLeS.jpg", "", 400, 300, "", "");gallery63_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XJnTWZibCW.jpg", "", 400, 300, "", "");gallery63_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XCtq7yEfW2.jpg", "", 400, 300, "", "");gallery63_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XQ0Z2xQ2Bg.jpg", "", 400, 300, "", "");gallery63_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XcPSWTErPd.jpg", "", 400, 300, "", "");gallery63_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XB7UVszgVn.jpg", "", 400, 300, "", "");gallery63_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XfIMXn36bf.jpg", "", 400, 300, "", "");gallery63_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XR4oBE1VIe.jpg", "", 400, 300, "", "");gallery63_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XZBRmLkkaT.jpg", "", 400, 300, "", "");gallery63_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XQ41LrGfNO.jpg", "", 400, 300, "", "");gallery63_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XIoPaByYau.jpg", "", 400, 300, "", "");gallery63_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XbMO7lDM7y.jpg", "", 400, 300, "", "");gallery63_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XR3g3Ohq3a.jpg", "", 400, 300, "", "");gallery63_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XR4Ds52RdL.jpg", "", 400, 300, "", "");gallery63_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XSMDqolyAI.jpg", "", 400, 300, "", "");gallery63_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XA87hHhbXr.jpg", "", 400, 300, "", "");gallery63_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XB037LiZUw.jpg", "", 400, 300, "", "");gallery63_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XZISgZR7ZK.jpg", "", 400, 300, "", "");gallery63_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XCRF60nNSa.jpg", "", 400, 300, "", "");gallery63_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XbQr8byNwm.jpg", "", 400, 300, "", "");gallery63_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XDyvowGF9P.jpg", "", 400, 300, "", "");gallery63_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XVeKgOmF82.jpg", "", 400, 300, "", "");gallery63_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XTuVadHn8Q.jpg", "", 400, 300, "", "");gallery63_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XX8Ah2ziGq.jpg", "", 400, 300, "", "");gallery63_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XYDmoMAyNF.jpg", "", 400, 300, "", "");gallery63_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XIiAlbGfhR.jpg", "", 400, 300, "", "");gallery63_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/Xc5vn2n9at.jpg", "", 400, 300, "", "");gallery63_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XBLJPeTTtL.jpg", "", 400, 300, "", "");      gallery63_0.show();    //]]&gt;  &lt;/script&gt;  &lt;noscript&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XWQDbaXYKK.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XNf83Ii3pq.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XfscAaVcKz.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XXbQvjCegZ.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XJzRnZ1bAY.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XbZ307hQu1.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XbYBv8DZVP.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XZzUg4xYfA.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XPGbqaSLeS.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XJnTWZibCW.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XCtq7yEfW2.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XQ0Z2xQ2Bg.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XcPSWTErPd.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XB7UVszgVn.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XfIMXn36bf.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XR4oBE1VIe.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XZBRmLkkaT.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XQ41LrGfNO.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XIoPaByYau.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XbMO7lDM7y.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XR3g3Ohq3a.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XR4Ds52RdL.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XSMDqolyAI.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XA87hHhbXr.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XB037LiZUw.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XZISgZR7ZK.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XCRF60nNSa.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XbQr8byNwm.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XDyvowGF9P.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XVeKgOmF82.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XTuVadHn8Q.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XX8Ah2ziGq.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XYDmoMAyNF.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XIiAlbGfhR.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/Xc5vn2n9at.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XBLJPeTTtL.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;  &lt;/noscript&gt;&lt;/div&gt;&lt;P align=center&gt;오늘의 처음 계획은 51Km나 되는 갈릴리 호수를 자전거를 타고 한바퀴&lt;/P&gt;&lt;P align=center&gt;돌려고 했었다.. 근데.. 이 뜨거운 햇빛에 혼자서.. 자전거 타고 돌려니..&lt;/P&gt;&lt;P align=center&gt;그러고 싶었던 나의 마음을 단한순간에 없애버렸다..&lt;/P&gt;&lt;P align=center&gt;대신.. 타브하로 가서 만복교회,베드로.. 아.. 3개의 교회를 갔는데&lt;/P&gt;&lt;P align=center&gt;이름이 잘 기억안난다;;&lt;/P&gt;&lt;P align=center&gt;쳇.. 이넘의 걸어서 이스라엘 책은 맵이&lt;/P&gt;&lt;P align=center&gt;너무 단순하다.. 하나도 못알아먹겠다.. -0-;;&lt;/P&gt;&lt;P align=center&gt;일단 베드로수위권교회.. 맞나 여기랑.. 또 하나 까먹었다.. 아아악!!!&lt;/P&gt;&lt;P align=center&gt;암튼 2곳은 갔는데 만복교회 대체 어디로 올라가라는데 어디로 올라가라는지&lt;/P&gt;&lt;P align=center&gt;삼거리도 어디가 삼거리인지 아무것도 안나와있다..&lt;/P&gt;&lt;P align=center&gt;그래서 이사람 저사람에게 물어보다가.. 벤이라는 프랑스 친구를 만났다..&lt;/P&gt;&lt;P align=center&gt;자신도 교회에 가는데 같이 가자고 한다.. 저 아래에서 만복교회를 봤다고 하면서 말이다.&lt;/P&gt;&lt;P align=center&gt;그래서 같이 여행하게된 프랑스 친구 벤..&lt;/P&gt;&lt;P align=center&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=center&gt;으.. 나의 착오로 인하여 모든짐을 들고.. 만복교회까지 올라가야했다..&lt;/P&gt;&lt;P align=center&gt;땡볕에 말이다.. 오.. -0- 미챠미챠;;&lt;/P&gt;&lt;P align=center&gt;한참을 걸어서 올라가니.. 교회는 2시 30분에 오픈한단다..&lt;/P&gt;&lt;P align=center&gt;이게 또 왠말..;;&lt;/P&gt;&lt;P align=center&gt;그래서 벤에게.. 한국 음악도 들려주고.. 이런저런 이야기도 하면서..&lt;/P&gt;&lt;P align=center&gt;거의 2시간을 휴식을 취했다.. 아니 기다렸다..&lt;/P&gt;&lt;P align=center&gt;그렇게 2시 30분이 되어서 교회가 문이 열리고 같이 들어가.&lt;/P&gt;&lt;P align=center&gt;서로 사진도 찍어주고 하였다.&lt;/P&gt;&lt;P align=center&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=center&gt;그러고 난후.. 다시 벤과 함께 티베리아의 아비브 호스텔로 왔다&lt;/P&gt;&lt;P align=center&gt;여긴 70세켈이닷.. 단.. 좀 더럽다;;&lt;/P&gt;&lt;P align=center&gt;아니 좀.. 많이.. 그래도 어차피 하루 잘꺼니까.. 나름 괜찮았다..&lt;/P&gt;&lt;P align=center&gt;또한.. 어제 티베리아 호스텔에서는 도미토리의 장점이 전혀 없었는데..&lt;/P&gt;&lt;P align=center&gt;즉.. 밤늦게 외국인이 들어와서 아무 말도 하지 못하고.. 그냥 자야했지만..&lt;/P&gt;&lt;P align=center&gt;아비브 호스텔에서는 독일인 2명과 프랑스인 2명(벤포함)그리고 나. 이렇게&lt;/P&gt;&lt;P align=center&gt;5명이 잤다..&lt;/P&gt;&lt;P align=center&gt;독일인 2명은 자전거를 타고 51km를 한바퀴 돈단다.. 갈릴리 호수를..&lt;/P&gt;&lt;P align=center&gt;이런.. 미친것들 하는 생각이 절로 들었지만 쩝. 아무튼 행운을 빈다..;;&lt;/P&gt;&lt;P align=center&gt;밤이 되어서 야경도 보고 좀 쉬기도 할겸 벤과 함께 갈릴리 호수 근처의&lt;/P&gt;&lt;P align=center&gt;벤치에 앉아서 휴식을 즐겼다..&lt;/P&gt;&lt;P align=center&gt;지나가는 귀엽지만 더러운..;; 고양이도 보고&lt;/P&gt;&lt;P align=center&gt;지나가면서 벤의 생김새 때문에 유대인인줄 착각하고 영맨들이..&lt;/P&gt;&lt;P align=center&gt;소리친다..;; 같은 유대인인줄 착각하고 말이다..;;&lt;/P&gt;&lt;P align=center&gt;벤이 자신의 생김새가 자신이 생각하기엔 다른데... 다들 유대인이라고 한다고 그런다..&lt;/P&gt;&lt;P align=center&gt;물론.. 나도.. 일본인이라고 생각한다고.. 혹은 중국 -0-;;&lt;/P&gt;&lt;P align=center&gt;난.... 코리아!!!&lt;/P&gt;&lt;P align=center&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=center&gt;아무튼 이렇게 쉬고나서 호스텔에서 잠을 잤다.&lt;/P&gt;&lt;P align=center&gt;&amp;nbsp;&lt;/P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2357933784790449713-2487816295984609998?l=akangels-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akangels-textcube.blogspot.com/feeds/2487816295984609998/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://akangels-textcube.blogspot.com/2009/08/090810-%ED%83%80%EB%B8%8C%ED%95%98.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/2487816295984609998'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/2487816295984609998'/><link rel='alternate' type='text/html' href='http://akangels-textcube.blogspot.com/2009/08/090810-%ED%83%80%EB%B8%8C%ED%95%98.html' title='09/08/10 타브하'/><author><name>아크엔젤스</name><uri>http://www.blogger.com/profile/10209348568937169243</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2357933784790449713.post-3266104653915172793</id><published>2009-08-10T03:00:00.000+09:00</published><updated>2011-01-29T19:57:22.424+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Diary'/><category scheme='http://www.blogger.com/atom/ns#' term='여행'/><title type='text'>09/08/09 티베리아에서의 하룻밤</title><content type='html'>&lt;script src='http://ss.textcube.com/service/blog/script/blogger.js' type='text/javascript'&gt;&lt;/script&gt;&lt;P&gt;&lt;div id="tt-gallery-62-0" class="tt-gallery-box" style="text-align: center; clear: both;"&gt;  &lt;script type="text/javascript"&gt;    //&lt;![CDATA[      var gallery62_0 = new TC$PRIV_TTGallery("tt-gallery-62-0");      gallery62_0.prevText = "이전 이미지 보기 버튼";       gallery62_0.nextText = "다음 이미지 보기 버튼";       gallery62_0.enlargeText = "원본 크기로 보기 버튼";       gallery62_0.altText = "갤러리 이미지"; gallery62_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XOec0k3XmI.jpg", "", 400, 300, "", "");gallery62_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XGbCasCMkQ.jpg", "", 400, 300, "", "");gallery62_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XYINp5CDJa.jpg", "", 400, 300, "", "");gallery62_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XI76R9HLQI.jpg", "", 400, 300, "", "");gallery62_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XE8TCREqjI.jpg", "", 400, 300, "", "");gallery62_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XXZiY8lmhF.jpg", "", 400, 300, "", "");gallery62_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XbFefHghLa.jpg", "", 400, 300, "", "");gallery62_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XcTakamgSf.jpg", "", 400, 300, "", "");gallery62_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XNqWbqQDyW.jpg", "", 400, 300, "", "");gallery62_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XDNEf1WKOY.jpg", "", 400, 300, "", "");      gallery62_0.show();    //]]&gt;  &lt;/script&gt;  &lt;noscript&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XOec0k3XmI.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XGbCasCMkQ.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XYINp5CDJa.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XI76R9HLQI.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XE8TCREqjI.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XXZiY8lmhF.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XbFefHghLa.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XcTakamgSf.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XNqWbqQDyW.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XDNEf1WKOY.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;  &lt;/noscript&gt;&lt;/div&gt;&lt;/P&gt;&lt;P align=center&gt;센터에서 점심을 먹고 티베리아로 출발..&lt;/P&gt;&lt;P align=center&gt;문제라면..&lt;/P&gt;&lt;P align=center&gt;현재 세켈이 별로없다.. 환전하고 가고 싶었는데 물어봐도 다들 환전소는 어딘지 모른단다..&lt;/P&gt;&lt;P align=center&gt;-0-... 에이.. 티베리아 가서 바꾸자..하는 마음에 무작정 출발..&lt;/P&gt;&lt;P align=center&gt;도착해서 내가 무엇을 해야할지 나도 모른다..&lt;/P&gt;&lt;P align=center&gt;무작정 출발한것이기에..&lt;/P&gt;&lt;P align=center&gt;일단 생각드는건 잘곳부터 찾자는 생각뿐..&lt;/P&gt;&lt;P align=center&gt;3시간 이상 버스를 타고 티베리아에 도착하였다.&lt;/P&gt;&lt;P align=center&gt;여기.. 시골인가.. -0-.. 버스정류장이 예루살렘처럼.. 좋지는 않다..&lt;/P&gt;&lt;P align=center&gt;아무튼 이넘의 지도같지도 않은 지도가 그려져있는 책을 보고.. 호스텔을 찾아 나섰다...&lt;/P&gt;&lt;P align=center&gt;아.. 대체 어딧는거야 -0-..&lt;/P&gt;&lt;P align=center&gt;티베리아 호스텔 찾았다.. 인터넷이 가능하다고 나왔기에 이곳으로 왔다..&lt;/P&gt;&lt;P align=center&gt;이씨 근데 책에는 도미토리 70세켈이라고 나왔는데&lt;/P&gt;&lt;P align=center&gt;우라질 100세켈이란다 -0-.. 이거 바가지 아냐 하는 생각도 했지만. 표지판에&lt;/P&gt;&lt;P align=center&gt;도미토리 100세켈, 싱글 200, 등등.. 나와있다..&lt;/P&gt;&lt;P align=center&gt;아.. 이책 언제꺼지... -0-;; 30세켈이나 올랐나부다..&lt;/P&gt;&lt;P align=center&gt;방에 들어가니 4명이 자는 방이다.. 그런데.. 지금 현재 시간 밤 9시인데.. &lt;/P&gt;&lt;P align=center&gt;이넘의 같이 쓰는 외국인은 들어오지않는다..&lt;/P&gt;&lt;P align=center&gt;여행 가는방향이 같으면 같이 가고싶은데 이것들 들어와야 말을 걸지..;;;&lt;/P&gt;&lt;P align=center&gt;아무튼.. 배도고프고.. 주위도 둘러볼겸.. 밖을 나섰다.&lt;/P&gt;&lt;P align=center&gt;갈릴리 호수에서 수영도하고 보트도 타고 있다 아주 신났다.. 이것들..&lt;/P&gt;&lt;P align=center&gt;누군.. 심심해 죽겠는데... 혼자 여행은 솔직히 재미없다;;&lt;/P&gt;&lt;P align=center&gt;밥먹고, 잠자고, 어차피 서바이벌 영어야 해결되지만..&lt;/P&gt;&lt;P align=center&gt;혼자 여행하면 사진찍기도 불편하고... 좀 그렇다..&lt;/P&gt;&lt;P align=center&gt;이따가 같이 룸 쓰는 외국인 오면.. 어디가냐고 물어보고 같이 가야겠다.. 안된다면&lt;/P&gt;&lt;P align=center&gt;또.. 혼자서.. 심심하게 여행해야된다..&lt;/P&gt;&lt;P align=center&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=center&gt;아차.. 주위를 둘러보는데 한 외국인이 뒤에서 따라온다.. 무섭게시리..&lt;/P&gt;&lt;P align=center&gt;.. .. 머야 왜 따라오는거야.. -0-;;&lt;/P&gt;&lt;P align=center&gt;뒤돌아보니.. 헬로우 한다.. are you 재팬?&lt;/P&gt;&lt;P align=center&gt;노!!! 이넘의 재팬소리 무쟈게 듣는다..&lt;/P&gt;&lt;P align=center&gt;from korea. 오 코리아.. 이런다..&lt;/P&gt;&lt;P align=center&gt;자기는 인디아라고 한다.. 그렇게 몇마디 한후에 바이했다.&lt;/P&gt;&lt;P align=center&gt;중요한.. 돈바꾸거를 호스텔 주인에게 위치를 물어보니 바로 아래에 있다고 해서... 찾아갔는데..&lt;/P&gt;&lt;P align=center&gt;우라질.. 우체국이 3시에 문을 닫는다.. 무슨넘의 우체국이.. 이렇게 빨리..;;&lt;/P&gt;&lt;P align=center&gt;어쩔수 없이 내일 바꾸어야 했다.&lt;/P&gt;&lt;P align=center&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=center&gt;그나저나 돈도 별로 안쓰는데 이것저것 나가는돈이 좀 많은듯하다 -0-;;&lt;/P&gt;&lt;P align=center&gt;쩝.. 최소한의 비용이 나가고 있는 것이긴 하지만..;;&lt;/P&gt;&lt;P align=center&gt;그래도 좀 아깝긴 하다.. 여기 이스라엘 차비, 밥값, 식생활에 꼭 필요한 비용이&lt;/P&gt;&lt;P align=center&gt;비싸다 -0-....&lt;/P&gt;&lt;P align=center&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=center&gt;몇일전에 올려놓았던 유럽여행 동행구한다는 나의 글에.. 누군가..&lt;/P&gt;&lt;P align=center&gt;8월 19일부터 9월2일인가?? 모르겠다 암튼 여행한다면서 같이 하자고 메일이 왔다..&lt;/P&gt;&lt;P align=center&gt;자신의 일정과 함께.. 일정을 보니 .. 괜찮긴한데,&lt;/P&gt;&lt;P align=center&gt;아직 아무것도 준비가 안된 나로선 아직 잘 모르겠다..&lt;/P&gt;&lt;P align=center&gt;센터로 돌아가서 유럽여행책을 보고 다시 생각해보고 연락을 준다고는 했는데...&lt;/P&gt;&lt;P align=center&gt;아무튼..&lt;/P&gt;&lt;P align=center&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=center&gt;내일은.. 티베리아의 오병이어교회, 베드로수위권교회, 팔복교회를 보고&lt;/P&gt;&lt;P align=center&gt;나사렛으로 이동하여 수태고지교회,요셉교회,마리아의우물,멘사크리스티를 보고나서&lt;/P&gt;&lt;P align=center&gt;하이파로 갈예정이다.. 바쁘다 바빠 --;;&lt;/P&gt;&lt;P align=center&gt;사실.. 티베리아 오기전에는 51Km나 되는 갈릴리 호수를 한바퀴 돌까도 생각했지만.. 여기 너무 덥다;;&lt;/P&gt;&lt;P align=center&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=center&gt;하이파에서 호스텔의 위치를 모르니 걱정이긴한데.. 어떻게 잘되겠지 -0-&lt;/P&gt;&lt;P align=center&gt;모르면물어보면되고.. 없으면 노숙하면되고.. 어차피.. 어떠케든 다 되게 되있으니&lt;/P&gt;&lt;P align=center&gt;단지 혼자라는게 심심할뿐....&lt;/P&gt;&lt;P align=center&gt;하이파에서 하루를 보내고 갈멜산과 엘리야의 동굴을 보고.. 센터로 돌아가야겠다..&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2357933784790449713-3266104653915172793?l=akangels-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akangels-textcube.blogspot.com/feeds/3266104653915172793/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://akangels-textcube.blogspot.com/2009/08/090809-%ED%8B%B0%EB%B2%A0%EB%A6%AC%EC%95%84%EC%97%90%EC%84%9C%EC%9D%98-%ED%95%98%EB%A3%BB%EB%B0%A4.html#comment-form' title='2개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/3266104653915172793'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/3266104653915172793'/><link rel='alternate' type='text/html' href='http://akangels-textcube.blogspot.com/2009/08/090809-%ED%8B%B0%EB%B2%A0%EB%A6%AC%EC%95%84%EC%97%90%EC%84%9C%EC%9D%98-%ED%95%98%EB%A3%BB%EB%B0%A4.html' title='09/08/09 티베리아에서의 하룻밤'/><author><name>아크엔젤스</name><uri>http://www.blogger.com/profile/10209348568937169243</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2357933784790449713.post-3533602459272195092</id><published>2009-08-10T02:07:00.000+09:00</published><updated>2011-01-29T19:57:22.303+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Diary'/><category scheme='http://www.blogger.com/atom/ns#' term='여행'/><title type='text'>09/08/08 My Birthday!!1</title><content type='html'>&lt;script src='http://ss.textcube.com/service/blog/script/blogger.js' type='text/javascript'&gt;&lt;/script&gt;&lt;P&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/1/10879/attach/XfwNstiaHG.jpg" style="width:500px;height:375px;" alt="" onclick="TC$PRIV_open_img('http://ss.textcube.com/blog/1/10879/attach/XfwNstiaHG.jpg')" /&gt;&lt;/div&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=center&gt;아침에 일어나서 교회를 갔다온후...&lt;/P&gt;&lt;P align=center&gt;저녁 8시가 넘어서 약속한 영화를 보러 갔다.&lt;/P&gt;&lt;P align=center&gt;약속장소 King George St.&lt;/P&gt;&lt;P align=center&gt;약속시간 8시 40분&lt;/P&gt;&lt;P align=center&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=center&gt;아.. 만나면 무슨말을 해야 하지 -0-;;&lt;/P&gt;&lt;P align=center&gt;무슨 말을 할수있어야 .. 멀 말하지..&lt;/P&gt;&lt;P align=center&gt;아무것도 모른다.. 어쨋든&lt;/P&gt;&lt;P align=center&gt;8시 40분이 조금 지나자 Rakefet이 왔다..&lt;/P&gt;&lt;P align=center&gt;오자마자 늦어서 미안하다고 그런다.. 머.. that's ok..&lt;/P&gt;&lt;P align=center&gt;나는 이런저런 이야기를 하다가 오늘 나의 생일이라고 하였다..&lt;/P&gt;&lt;P align=center&gt;그랬더니 축하해준다..&lt;/P&gt;&lt;P align=center&gt;아무튼 영화관을 가기위해서는 시계탑에서 버스를 타고 이동해야했다.&lt;/P&gt;&lt;P align=center&gt;가는길에 이런저런 이야기를 하였다.&lt;/P&gt;&lt;P align=center&gt;Rakefet이 자신의 나이가 어느정도처럼 보이냐고 물어본다..&lt;/P&gt;&lt;P align=center&gt;당황스럽게 말이다.. 내가 골똘히 생각하자.. try try 한다..;;&lt;/P&gt;&lt;P align=center&gt;재은과 친구느 24살정도 되겠지 머.. 하고 24라고 하였다..&lt;/P&gt;&lt;P align=center&gt;하지만 자신의 나이는 29라고 한다.. ;;;;;;;;;&lt;/P&gt;&lt;P align=center&gt;이렇게 말을 하고 걷다보니.. 영화관에 도착하였다.&lt;/P&gt;&lt;P align=center&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=center&gt;일본영화를 볼지 미국영화를 볼지 정하라고 해서.. 음..&lt;/P&gt;&lt;P align=center&gt;영어 듣기라도할겸.. -0-; 미국영화 하였다.. 그런데 이것은 나의 실수여따 -0-&lt;/P&gt;&lt;P align=center&gt;우라질.. 솔직히.. 영화는 재미없었다;;&lt;/P&gt;&lt;P align=center&gt;영화의 내용은 이해가 가는데 멜로이고.. 특히나 난 이영화가 별로였다.. 하지만..&lt;/P&gt;&lt;P align=center&gt;나에겐 친구가 생긴것이 무엇보다 좋았기에.. 상관없었다.&lt;/P&gt;&lt;P align=center&gt;그렇게 영화를 보고난후 밤 11시가 넘었다...&lt;/P&gt;&lt;P align=center&gt;지나가는 사람에게 부탁하여 같이 사진을 찍어달라고 해서 한컷 찍은 사진이다..&lt;/P&gt;&lt;P align=center&gt;내일은... 갈릴리를 가야겠다.. 근데... 이거 지리도 모르겠고..&lt;/P&gt;&lt;P align=center&gt;한국에서 사온 걸어서 이스라엘 이책.. 지도.. 너무 엉망이다..&lt;/P&gt;&lt;P align=center&gt;너무 대춛대충.. -0- 내일은 또 힘든 하루가 될듯하다.&lt;/P&gt;&lt;P align=center&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=center&gt;- 사실 이 이름도 오늘 안것이다. 발음이 쉽지않아서.. 몇번이나 다시 말해야했다...ㅋㅋㅋ&lt;/P&gt;&lt;P align=center&gt;&amp;nbsp;&lt;/P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2357933784790449713-3533602459272195092?l=akangels-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akangels-textcube.blogspot.com/feeds/3533602459272195092/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://akangels-textcube.blogspot.com/2009/08/090808-my-birthday1.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/3533602459272195092'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/3533602459272195092'/><link rel='alternate' type='text/html' href='http://akangels-textcube.blogspot.com/2009/08/090808-my-birthday1.html' title='09/08/08 My Birthday!!1'/><author><name>아크엔젤스</name><uri>http://www.blogger.com/profile/10209348568937169243</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2357933784790449713.post-2820817625750783004</id><published>2009-08-08T05:00:00.000+09:00</published><updated>2011-01-29T19:57:22.152+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Diary'/><category scheme='http://www.blogger.com/atom/ns#' term='여행'/><title type='text'>09/08/07 나에겐 커다란 미션..</title><content type='html'>&lt;P align=center&gt;오늘은 금요일..&lt;/P&gt;&lt;P align=center&gt;이스라엘에서는 1시이후인가..?? 차가 다 끈긴다..&lt;/P&gt;&lt;P align=center&gt;우리나라 한국으로 치면 오늘은 토요일이다..&lt;/P&gt;&lt;P align=center&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=center&gt;내일 재은의 친구와 영화를 보러 가기로 했다.&lt;/P&gt;&lt;P align=center&gt;그런데.. 내일 간다는 것만 알지 시간? 장소? 정하지 않았다.&lt;/P&gt;&lt;P align=center&gt;그래서 재은이 나에게 전화번호를 알려주었다.&lt;/P&gt;&lt;P align=center&gt;컥.. 나보고.. 약속시간을 정하라는 것이다..&lt;/P&gt;&lt;P align=center&gt;말이.. 말이.. 전화로는 바디랭기지도 통하지 않는데 말이닷..&lt;/P&gt;&lt;P align=center&gt;ㅠㅠ&lt;/P&gt;&lt;P align=center&gt;고민하다가.. 용기를 내어.. 전화를 해보았다..&lt;/P&gt;&lt;P align=center&gt;뚜~~~. 뚜~~~. 뚜~~~. 이상한 히브리어말..&lt;/P&gt;&lt;P align=center&gt;즉.. 전화를 받지 않는 것이다.&lt;/P&gt;&lt;P align=center&gt;2번, 3번 전화를 해보아도..&lt;/P&gt;&lt;P align=center&gt;몇분이 지난후에 다시 전화를 해보아도 전화를 받지않았다.&lt;/P&gt;&lt;P align=center&gt;음.. 바쁜가부다... 내심 안심이 되기도 했다;;;;;;&lt;/P&gt;&lt;P align=center&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=center&gt;저녁을 먹고.. 조금 시간이 지난뒤에 센터로 전화가 왔다.&lt;/P&gt;&lt;P align=center&gt;컥.. 드디어 때가 왔구나...&lt;/P&gt;&lt;P align=center&gt;역시나.. 재은 친구에게 전화가 온것이다.&lt;/P&gt;&lt;P align=center&gt;하이.. My name is YONG HWAN, SHIN&lt;/P&gt;&lt;P align=center&gt;재은's friend.&lt;/P&gt;&lt;P align=center&gt;...&lt;/P&gt;&lt;P align=center&gt;...&lt;/P&gt;&lt;P align=center&gt;나를 단번에 알아보더라..&lt;/P&gt;&lt;P align=center&gt;아무튼..&lt;/P&gt;&lt;P align=center&gt;전화 안받은 것은.. 일을 하고 있었다고 한다..&lt;/P&gt;&lt;P align=center&gt;생각했던것처럼 대화하는데 어렵지는 않았다..&lt;/P&gt;&lt;P align=center&gt;약속시간은.. 내일 센터의 전화로 전화를 준다고 한다..&lt;/P&gt;&lt;P align=center&gt;이렇게 나의 오늘의 커다란 전화 미션은 끝이 났다.&lt;/P&gt;&lt;P align=center&gt;&amp;nbsp;&lt;/P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2357933784790449713-2820817625750783004?l=akangels-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akangels-textcube.blogspot.com/feeds/2820817625750783004/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://akangels-textcube.blogspot.com/2009/08/090807-%EB%82%98%EC%97%90%EA%B2%90-%EC%BB%A4%EB%8B%A4%EB%9E%80-%EB%AF%B8%EC%85%98.html#comment-form' title='1개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/2820817625750783004'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/2820817625750783004'/><link rel='alternate' type='text/html' href='http://akangels-textcube.blogspot.com/2009/08/090807-%EB%82%98%EC%97%90%EA%B2%90-%EC%BB%A4%EB%8B%A4%EB%9E%80-%EB%AF%B8%EC%85%98.html' title='09/08/07 나에겐 커다란 미션..'/><author><name>아크엔젤스</name><uri>http://www.blogger.com/profile/10209348568937169243</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2357933784790449713.post-8747841206697975703</id><published>2009-08-07T15:59:00.000+09:00</published><updated>2011-01-29T19:57:21.951+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Diary'/><category scheme='http://www.blogger.com/atom/ns#' term='여행'/><title type='text'>09/08/06 Fastival!!</title><content type='html'>&lt;script src='http://ss.textcube.com/service/blog/script/blogger.js' type='text/javascript'&gt;&lt;/script&gt;&lt;div id="tt-gallery-59-0" class="tt-gallery-box" style="text-align: center; clear: both;"&gt;  &lt;script type="text/javascript"&gt;    //&lt;![CDATA[      var gallery59_0 = new TC$PRIV_TTGallery("tt-gallery-59-0");      gallery59_0.prevText = "이전 이미지 보기 버튼";       gallery59_0.nextText = "다음 이미지 보기 버튼";       gallery59_0.enlargeText = "원본 크기로 보기 버튼";       gallery59_0.altText = "갤러리 이미지"; gallery59_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XBVM4Ujaw6.jpg", "", 400, 300, "", "");gallery59_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XOeq43mogJ.jpg", "", 400, 300, "", "");gallery59_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XHWA7jFboI.jpg", "", 400, 300, "", "");gallery59_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XQTuy0075t.jpg", "", 400, 300, "", "");gallery59_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XYFWj4UeN0.jpg", "", 400, 300, "", "");gallery59_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XLd4x8zaZt.jpg", "", 400, 300, "", "");gallery59_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XexiZZ0Cr7.jpg", "", 400, 300, "", "");gallery59_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XepeteQNaN.jpg", "", 400, 300, "", "");gallery59_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XExkAeDDXj.jpg", "", 400, 300, "", "");gallery59_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XIDBPwQNq2.jpg", "", 400, 300, "", "");gallery59_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XHygMs3SAR.jpg", "", 400, 300, "", "");gallery59_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XKTee2HTaP.jpg", "", 400, 300, "", "");gallery59_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XYYYhTy1xA.jpg", "", 400, 300, "", "");gallery59_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XJWooaBR61.jpg", "", 400, 300, "", "");gallery59_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XJBUqgggbU.jpg", "", 400, 300, "", "");gallery59_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XeAlg5FHiH.jpg", "", 400, 300, "", "");gallery59_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XbgFHNyhYO.jpg", "", 400, 300, "", "");gallery59_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XMATrMWVm9.jpg", "", 400, 300, "", "");gallery59_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XMgXuCxE2O.jpg", "", 400, 300, "", "");gallery59_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XXzU0bG4dM.jpg", "", 400, 300, "", "");gallery59_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XUcjuQhbgW.jpg", "", 400, 300, "", "");gallery59_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XWBbpIhSkv.jpg", "", 400, 300, "", "");gallery59_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XShOCh1JSO.jpg", "", 400, 300, "", "");gallery59_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/Xak2LbnsKZ.jpg", "", 400, 300, "", "");gallery59_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XYYs5AVAMa.jpg", "", 400, 300, "", "");gallery59_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XUjba8zan2.jpg", "", 400, 300, "", "");gallery59_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/Xdi4bSCF4h.jpg", "", 400, 300, "", "");gallery59_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XEm6IRRb3l.jpg", "", 400, 300, "", "");gallery59_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XdNWupH9HA.jpg", "", 400, 300, "", "");gallery59_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XNd6xcUXeU.jpg", "", 400, 300, "", "");gallery59_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XeirH1ltQ9.jpg", "", 400, 300, "", "");gallery59_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XVSbLWAbE0.jpg", "", 400, 300, "", "");gallery59_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XIvJq0DD77.jpg", "", 400, 300, "", "");gallery59_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XX4wYxyijE.jpg", "", 400, 300, "", "");gallery59_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XUztV2V7t9.jpg", "", 400, 300, "", "");gallery59_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XYUa9lUhVK.jpg", "", 400, 300, "", "");gallery59_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XZrLXkFurW.jpg", "", 400, 300, "", "");gallery59_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XOmpEVlWRW.jpg", "", 400, 300, "", "");gallery59_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XRq1OTA97Y.jpg", "", 400, 300, "", "");gallery59_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XG2JwUHH7g.jpg", "", 400, 300, "", "");      gallery59_0.show();    //]]&gt;  &lt;/script&gt;  &lt;noscript&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XBVM4Ujaw6.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XOeq43mogJ.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XHWA7jFboI.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XQTuy0075t.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XYFWj4UeN0.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XLd4x8zaZt.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XexiZZ0Cr7.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XepeteQNaN.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XExkAeDDXj.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XIDBPwQNq2.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XHygMs3SAR.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XKTee2HTaP.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XYYYhTy1xA.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XJWooaBR61.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XJBUqgggbU.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XeAlg5FHiH.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XbgFHNyhYO.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XMATrMWVm9.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XMgXuCxE2O.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XXzU0bG4dM.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XUcjuQhbgW.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XWBbpIhSkv.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XShOCh1JSO.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/Xak2LbnsKZ.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XYYs5AVAMa.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XUjba8zan2.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/Xdi4bSCF4h.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XEm6IRRb3l.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XdNWupH9HA.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XNd6xcUXeU.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XeirH1ltQ9.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XVSbLWAbE0.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XIvJq0DD77.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XX4wYxyijE.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XUztV2V7t9.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XYUa9lUhVK.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XZrLXkFurW.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XOmpEVlWRW.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XRq1OTA97Y.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XG2JwUHH7g.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;  &lt;/noscript&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2357933784790449713-8747841206697975703?l=akangels-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akangels-textcube.blogspot.com/feeds/8747841206697975703/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://akangels-textcube.blogspot.com/2009/08/090806-fastival.html#comment-form' title='1개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/8747841206697975703'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2357933784790449713/posts/default/8747841206697975703'/><link rel='alternate' type='text/html' href='http://akangels-textcube.blogspot.com/2009/08/090806-fastival.html' title='09/08/06 Fastival!!'/><author><name>아크엔젤스</name><uri>http://www.blogger.com/profile/10209348568937169243</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2357933784790449713.post-4941265932858927208</id><published>2009-08-06T01:32:00.000+09:00</published><updated>2011-01-29T19:57:21.736+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Diary'/><category scheme='http://www.blogger.com/atom/ns#' term='여행'/><title type='text'>09/08/05 Old City</title><content type='html'>&lt;script src='http://ss.textcube.com/service/blog/script/blogger.js' type='text/javascript'&gt;&lt;/script&gt;&lt;P&gt;&lt;div id="tt-gallery-58-0" class="tt-gallery-box" style="text-align: center; clear: both;"&gt;  &lt;script type="text/javascript"&gt;    //&lt;![CDATA[      var gallery58_0 = new TC$PRIV_TTGallery("tt-gallery-58-0");      gallery58_0.prevText = "이전 이미지 보기 버튼";       gallery58_0.nextText = "다음 이미지 보기 버튼";       gallery58_0.enlargeText = "원본 크기로 보기 버튼";       gallery58_0.altText = "갤러리 이미지"; gallery58_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XST4VeH64M.jpg", "", 400, 300, "", "");gallery58_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XIoC0kln8a.jpg", "", 400, 300, "", "");gallery58_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XWreGnXSZy.jpg", "", 400, 300, "", "");gallery58_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XQQ9ayzXrg.jpg", "", 400, 300, "", "");gallery58_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XSMnrzzmkq.jpg", "", 400, 300, "", "");gallery58_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XNg6m8QqxF.jpg", "", 400, 300, "", "");gallery58_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XYV0TGHiyY.jpg", "", 400, 300, "", "");gallery58_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XMC4hZiDWb.jpg", "", 400, 300, "", "");gallery58_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XGjBC8TScy.jpg", "", 400, 300, "", "");gallery58_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XGTVpIT78d.jpg", "", 400, 300, "", "");gallery58_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/Xfddabyu3V.jpg", "", 400, 300, "", "");gallery58_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XK58FPxUbF.jpg", "", 400, 300, "", "");gallery58_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XMapPpDV1W.jpg", "", 400, 300, "", "");gallery58_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XMXrUZFE1E.jpg", "", 400, 300, "", "");gallery58_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XOlQPpQZxW.jpg", "", 225, 300, "", "");gallery58_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XPtiTMWLJH.jpg", "", 225, 300, "", "");gallery58_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XS9vB5XsAL.jpg", "", 400, 300, "", "");gallery58_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XSbvvv0Fl2.jpg", "", 400, 300, "", "");gallery58_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XTa1bPzIFT.jpg", "", 400, 300, "", "");gallery58_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XHiAbuRF5j.jpg", "", 400, 300, "", "");gallery58_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XP0SpBgbv7.jpg", "", 400, 300, "", "");gallery58_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XA7WPvna7E.jpg", "", 400, 300, "", "");gallery58_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XTEi2CHeEo.jpg", "", 400, 300, "", "");gallery58_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XPwy2nWa3r.jpg", "", 400, 300, "", "");gallery58_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XMMFyHXTUz.jpg", "", 400, 300, "", "");gallery58_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XJezUFUjrr.jpg", "", 400, 300, "", "");gallery58_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XIE8SFjELG.jpg", "", 400, 300, "", "");gallery58_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XMiG1zWHX7.jpg", "", 400, 300, "", "");gallery58_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XUOd7jjHkb.jpg", "", 400, 300, "", "");gallery58_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XSrorekQ3B.jpg", "", 400, 300, "", "");gallery58_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XZaX4myDzI.jpg", "", 400, 300, "", "");gallery58_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XEbjNan8Nc.jpg", "", 225, 300, "", "");gallery58_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/Xab2lBXM5D.jpg", "", 400, 300, "", "");gallery58_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XCBAeAVRjr.jpg", "", 400, 300, "", "");gallery58_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XEcAB1lkno.jpg", "", 400, 300, "", "");gallery58_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XWeRabXel5.jpg", "", 400, 300, "", "");gallery58_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XFk4bK3JR4.jpg", "", 400, 300, "", "");gallery58_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XeV0NazqfF.jpg", "", 400, 300, "", "");gallery58_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XKq9bGRbqC.jpg", "", 400, 300, "", "");gallery58_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XEwFi4n2mC.jpg", "", 400, 300, "", "");gallery58_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XXaHzGz4PO.jpg", "", 400, 300, "", "");gallery58_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XeL5ViwYTt.jpg", "", 400, 300, "", "");gallery58_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XJGacvgIj8.jpg", "", 400, 300, "", "");gallery58_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XfhbxGWWCu.jpg", "", 400, 300, "", "");gallery58_0.appendImage("http://ss.textcube.com/blog/1/10879/attach/XNq5Yy3k6q.jpg", "", 400, 300, "", "");      gallery58_0.show();    //]]&gt;  &lt;/script&gt;  &lt;noscript&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XST4VeH64M.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XIoC0kln8a.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XWreGnXSZy.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XQQ9ayzXrg.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XSMnrzzmkq.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XNg6m8QqxF.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XYV0TGHiyY.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XMC4hZiDWb.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XGjBC8TScy.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XGTVpIT78d.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/Xfddabyu3V.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XK58FPxUbF.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XMapPpDV1W.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XMXrUZFE1E.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XOlQPpQZxW.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XPtiTMWLJH.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XS9vB5XsAL.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XSbvvv0Fl2.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XTa1bPzIFT.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XHiAbuRF5j.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XP0SpBgbv7.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XA7WPvna7E.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XTEi2CHeEo.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XPwy2nWa3r.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XMMFyHXTUz.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XJezUFUjrr.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XIE8SFjELG.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XMiG1zWHX7.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XUOd7jjHkb.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;  &lt;img src="http://ss.textcube.com/blog/1/10879/attach/XSrorekQ3B.jpg" alt="사용자 삽입 이미지" /&gt;&lt;/div&gt;&lt;div class="imageblock center" style="text-align: center; 
