1. Abstract Factory(추상 팩토리) 패턴
1) 정의
구체적인 클래스를 지정하지 않고, 관련성을 갖는 객체들의 집합을 생성하거나 서로 독립적인 객체들의 집합을 생성할 수 있는 인터페이스를 제공한다. |
추상 팩토리를 한마디로 정의 하자면 ‘데이터를 추상화 한다’ 이다.
풀어서 설명하자면 게임 세팅에 있어 내부 데이터를 인터페이스로부터 독립시키려는 패턴이라고 할 수 있다.
2) 예제
위의 설명이 잘 이해가 되는가? 아마도 이해가 잘 안될 것이다. 그렇다면 다음의 경우를 한번 보자.
[어느 공장장의 고민…] 저는 재료를 가공해서 완성품을 만드는 공장의 사장이예요… 저희 공장에서는 구리, 은, 금 등을 가공해서 장식용 구리검, 은검, 금검을 만들고 있지요 그런데 이번에 스테인레스로 검을 만들려고 재료를 늘렸는데 저희 공장 구조상 또 공장을 늘려야 해서 고민이 이만저만이 아니예요; 저희 공장이 이런 구조로 물건을 만들거든요 구리 -> [공장A] -> 구리검 은 -> [공장B] -> 은검 이런 형태로 만들다 보니 재료를 추가 할 때 마다. 공장을 새로 지어야 해서 고민이 이만 저만이 아니예요. 휴 어떻게 해결을 해야 할까요? |
[어느 공장장의 고민…]을 보면 공장이 제품을 만들 때 해당 재료에 맞는 공장이 따로 존재해서 재료가 추가 될 때 마다 공장을 추가해야 하는 리소스가 많이 먹히는 방식을 사용하고 있다는 것을 알 수 있다.
그렇다면 이 공장장의 고민을 해결해주기 위해서 필요한 것은 무엇일까?
그 것은 공장과 재료를 분리해 내는 일이다.
아래의 그림을 보자.
표3을 보면 하나의 공장이 있고 재료가 있다는 것을 볼 수 있다.
여기서 공장을 인터페이스, 재료를 데이터라고 규정할 수 있고, 인터페이스는 동일하되 재료를 무한으로 확장할 수 있다는 것을 알 수 있다. 공장장이 재료를 추가 할 때 마다 공장을 새로 지어야 하는 패턴에 비해 얼마나 확장성이 높은가?
이러한 패턴을 추상 팩토리 패턴이라고 한다.
댓글 없음:
댓글 쓰기