디자인패턴 Abstract Factory(추상 팩토리) 패턴

황제낙엽 2007.11.25 11:29 조회 수 : 365 추천:97

 

1.    Abstract Factory(추상 팩토리) 패턴

 

1)     정의

구체적인 클래스를 지정하지 않고, 관련성을 갖는 객체들의 집합을 생성하거나 서로 독립적인 객체들의 집합을 생성할 수 있는 인터페이스를 제공한다.

 

추상 팩토리를 한마디로 정의 하자면 ‘데이터를 추상화 한다’ 이다.

풀어서 설명하자면 게임 세팅에 있어 내부 데이터를 인터페이스로부터 독립시키려는 패턴이라고 할 수 있다.

 

2)     예제

위의 설명이 잘 이해가 되는가? 아마도 이해가 잘 안될 것이다. 그렇다면 다음의 경우를 한번 보자.

 

[어느 공장장의 고민…]

저는 재료를 가공해서 완성품을 만드는 공장의 사장이예요…

저희 공장에서는 구리, 은, 금 등을 가공해서 장식용 구리검, 은검, 금검을 만들고 있지요

그런데 이번에 스테인레스로 검을 만들려고 재료를 늘렸는데 저희 공장 구조상 또 공장을 늘려야 해서 고민이 이만저만이 아니예요; 저희 공장이 이런 구조로 물건을 만들거든요

 

구리 -> [공장A] -> 구리검

은 -> [공장B] -> 은검

 

이런 형태로 만들다 보니 재료를 추가 할 때 마다. 공장을 새로 지어야 해서 고민이 이만 저만이 아니예요. 휴 어떻게 해결을 해야 할까요?

 

[어느 공장장의 고민…]을 보면 공장이 제품을 만들 때 해당 재료에 맞는 공장이 따로 존재해서 재료가 추가 될 때 마다 공장을 추가해야 하는 리소스가 많이 먹히는 방식을 사용하고 있다는 것을 알 수 있다.

 

그렇다면 이 공장장의 고민을 해결해주기 위해서 필요한 것은 무엇일까?

그 것은 공장과 재료를 분리해 내는 일이다.

아래의 그림을 보자.

 

npe18_gamediz.jpg

 

표3을 보면 하나의 공장이 있고 재료가 있다는 것을 볼 수 있다.

여기서 공장을 인터페이스, 재료를 데이터라고 규정할 수 있고, 인터페이스는 동일하되 재료를 무한으로 확장할 수 있다는 것을 알 수 있다. 공장장이 재료를 추가 할 때 마다 공장을 새로 지어야 하는 패턴에 비해 얼마나 확장성이 높은가?

이러한 패턴을 추상 팩토리 패턴이라고 한다.

 

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