|
2006년 12월 21일
Factory Method & Abstract Factory 차이점작성자 : 박민권 Factory Method 패턴과 Abstract Factory 패턴이 너무 비슷해 보여서 이 두 패턴의 차이점을 정의해봅니다. 두 패턴에 대한 자세한 내용은 이곳에 기술하지 않습니다. 디자인 패턴에 대해 궁금증을 갖고 이 글을 읽으시는 분이라면 상속, 다형성, abstract등 클래스에 대한 기본지식은 알고 있다는 가정하에 글을 작성했습니다. 이해하기 쉽도록 스타크래프트를 예로 설명하겠습니다. 틀린 부분이 있다면 지적 부탁드립니다. Factory Methodabstract class 유닛{ void 어택(); } class 마린 : 유닛{ void 어택(){총쏜다;} } class 매딕 : 유닛{ void 어택(){치료한다;} } class 배럭{ 유닛 생성(종류){return (종류==MR) ? new 마린 : new 매딕;} } 배럭(클래스)에서는 유닛(추상클래스)을 생성할 수 있습니다. 유닛을 상속받은 마린(클래스)과 매딕(클래스)이 있습니다. 배럭의 생성() 메소드에 인수로 무엇을 주느냐에 따라 마린 또는 매딕을 생성할 수 있습니다. 이런 복잡해 보이는 방식을 어디다가 쓰려고 만들었을까요? 아래와 같은 장점이 있기 때문입니다. 유닛 H; H = 배럭.생성(MR); //마린생성 H.어택(); //총쏘기 H = 배럭.생성(MD); //매딕생성 H.어택(); //치료하기 배럭에서는 상황에 따라 마린 또는 매딕이 생성되지만 무엇이 생성되었는지는 알지 못해도 생성된 유닛을 사용하는데는 문제가 없습니다. 이렇듯 Factory에서 생성된 객체를 사용자는 종류에 신경쓰지 않고 생성된 객체를 똑같이 사용할 수 있습니다. Abstract Factoryabstract class 유닛{ void 어택(); } class 마린 : 유닛{ void 어택(){총쏜다;} } class 매딕 : 유닛{ void 어택(){치료한다;} } class 배틀크루저 : 유닛{ void 어택(){레이저;} } class 레이스 : 유닛{ void 어택(){미사일;} } abstract class 생산공장{ 유닛 생산(); } class 배럭 : 생산공장{ 유닛 생성(종류){return (종류==MR) ? new 마린 : new 매딕;} } class 스타포트 : 생산공장{ 유닛 생성(종류){return (종류==BC) ? new 배틀크루저 : new 레이스;} } 제가 찾아본 Abstract Factory 패턴에 대한 예제는 가상공장에서 가상제품1과 가상제품2를 생산하는 메소드가 나뉘어져 있는데 그 부분이 중요한 것이 아니라는 판단이 들어 제 나름대로 예제를 작성해 봤습니다. Abstract Factory 패턴에 대한 장점은 Factory Method 패턴에 대한 장점의 확장이라 할 수 있겠습니다. 위 클래스를 이용한 예제는 아래와 같습니다. 생산공장 F; 유닛 H; F = new 배럭(); H = F.생성(MR); //마린생성 H.어택(); //총쏘기 F = new 스타포트(); H = F.생성(BC); //배틀크루저생성 H.어택(); //레이저 * 마음대로 퍼가셔도 되지만 출처를 남겨주세요.(요즘 워낙 불펌이 많아서요.) 김재호// 추가 설명 감사합니다. 이 패턴을 설명하는 다른 사이트의 설명과 맞추어 설명하기 위해 H = F.생성(MR); 식으로 생성했으며 아래 댓글로 달린 김재호님의 추가 설명도 같이 참고하시기 바랍니다. 태그 : 디자인 패턴 Factory Method Abstract Factory |
ABOUT
이글루 파인더
카테고리
그냥 잡담
최근 등록된 덧글
저는 우분투에 다음체를 설치해보지 않..
by -A2- at 14:30 화면 맨 아래 아이콘들은 Avant Windo.. by -A2- at 14:28 윈도우쪽엔 둘다 적용해본 결과 다음체.. by LIVey at 13:30 우분투 8.10 정식 나올때 까지 15일 남았.. by 라이언 at 10/15 저도 공감해요. ㅋㅋ by -A2- at 10/15 얼마전에 KLDP보니까 이제 리눅스를 .. by 주성치 at 10/14 Factory Method와 Abstract Factor.. by -A2- at 10/14 Compiz Fusion을 쓰는 우분투에 테마.. by -A2- at 10/14 정말 오랜만에 변경했어요. 스샷 포스팅.. by -A2- at 10/14 꼭 한번 써보세요. ^^ by -A2- at 10/14 왠만하면 노트북에도 우분투 잘 돌아가요.. by -A2- at 10/14 우찌 맥하고 짬뽕이 된 인상입니다. by 도아 at 10/14 그리고, Factory Method Pattern은 .. by 나무귀신 at 10/14 DriverManager는 내부적으로 Factory.. by 나무귀신 at 10/14 오랫만에 테마 변경 포스팅을 쓰셨네요... by 까칠한JC at 10/14 우와.... 우분투 멋지네요.... 저도.. by Rakuen at 10/14 너무이뻐서 깔아보고 싶어도.. 14인치 .. by 배가본드 at 10/13 스샷 찍으시면 트랙백 쏴주세요. ^^ by -A2- at 10/13 제가 원래 좀 심플하게 씁니다. ㅋ ^^ by -A2- at 10/13 네~ 짱! 멋있어요. ^^ by -A2- at 10/13 최근 등록된 트랙백
[술에 관한 초인보고서] 바톤 릴레이
by Art & Soft Space ★ 어느 가을날, 즐거운 기억의 단상. - .. by ** MY's kitchen ** MBTI 성격 테스트 by 행복한 개발을 위한 블로그 MBTI 유형테스트 by xylosper's notebook 술에 관한 바톤 문답. by 900gle.info 『술에 대한 나의 생각』12문답 바톤 이.. by Lovely~♡ 술에 관한 바톤 문답 by 조약돌의 이야기 바다 네이버에서 배포하는 '나눔글꼴'을 리.. by 체리필터의 인생이야기 [바톤]술에관한 문답 by 김Su 다. 술에 관한 바톤 문답 by 감성 일기 술에 관한 바톤 문답- by 해피-잡다구리구리~ 술에 관한 바톤 문답 - 이거 수위가 ....!! by ** MY's kitchen ** MBTI 검사를 하다 : ) by BreezyMind A2님의 블로그에서 본 MBTI 검사 by 온새미의 블로그 MBTI by 친절한 냥이님 :D MBTI검사를 해 보았습니다. by 뚜찌의 skillOn* 올블로그 파도타기 놀이 by 멀뚱이 블로그 2008년 MBTI 검사 결과 by Programmer greenfrog !! 석환의 생각 by plute's me2DAY [100번째 포스팅] 감사합니다. 고맙.. by ** MY's kitchen ** 이전 블로그
라이프 로그
|