////
Search
🏭

Factory method || Abstract Factory pattern(팩토리 패턴)

팩토리 패턴이란? 위키백과 정확한 클래스를 지정하지 않고도 객체 생성 문제를 처리하기 위해 팩토리를 사용하는 생성 패턴이다. 특징
new를 사용하지 않는다.
생성책임을 팩토리에 위임한다.
결합도를 낮춘다.
솔직히 이렇게 본다면 잘 이해가 안된다. 그래서 필자의 경우는 필자가 이해한 방식으로 팩토리 패턴을 정의해본다.
예를 들어 아래와 같은 상황이 있다고 가정해보자. 우리의 색종이 제작 업체는 다양한 색종이 모양을 주문 받아 색을 입혀 주문자에게 배송해준다. 하지만 1년 후 사업이 너무 성공해서 아래와 같이 도형이 다양해졌다. 여기서 문제가 생긴다. 도형이 다양해져서 더 이상 공장에 도형을 적재할 공간(if를 추가하거나, 유지보수를 위해 찾아야 하는 코드가 많아진 것을 의미)이 없어진 것이다. 할 수 있더라도 엄청나게 많은 도형 속에서 필요한 도형을 찾아야한다…

간단한 팩토리와 팩토리 메서드 패턴 적용 후

첫 번째 그림의 경우 아주 심플한 팩토리를 적용했다. 창고를 사버린 사장님은 모든 도형을 창고에 몰아넣었다. 두 번째 그림의 경우 팩토리 메서드를 적용했다. 창고에 몰아 넣긴 했는데, 문제가 도형에 색칠을 못하는 경우가 생겨 버린 것이다. 이를 해결하기 위하여 창고에서 도형을 만들 때 절취선을 추가한 상태로 색칠하는 부서로 넘겨준 것이다. 덕분에 더 이상 도색하는 부서에서는 모양 걱정 없이 색칠을 할 수 있게 된 것이다.

추상 팩토리 패턴을 적용 후

근데 앞서 팩토리 메서드 패턴을 적용하고 나서 로스가 너무 많아진 것이다. 즉, 작은 도형과 큰 도형 별 모두 같은 사이즈의 직사각형 안에 절취선을 넣어 버려서 로스가 높아진 것이다. 그래서 사장님은 1X3 || 3X5의 도형에 작은 도형과 큰 도형을 분하였다. 덕분에 도색 작업도 가능하며, 창고 또한 1X3 창고 || 3 X 5 창고 두 가지로 분리할 수 있었다. 즉, 로스를 줄인다(원하는 것이 다르다. 하지만 모양은 똑같다) 라는 말처럼 모양은 동일하지만 사이즈는 다르다.

팩토리 패턴 이해하기

팩토리 패턴이란? 위키백과 정확한 클래스를 지정하지 않고도 객체 생성 문제를 처리하기 위해 팩토리를 사용하는 생성 패턴이다.
아하 객체 생성을 팩토리를 이용해서 가져오구나
new를 사용하지 않는다.
당연히 new를 쓰지 않구나. 팩토리에서 가져오니깐
생성책임을 팩토리에 위임한다.
결합도를 낮춘다.
팩토리에서 생성하는 도형은 모두 절취선은 가지지만 동일한 직사각형 모양이구나
팩토리 메서드 패턴 Creator - 창고 ConcreteCreator - 창고 안에 들어있는 각각의 절취선이 들어간 직사각형 종이 추상 팩토리 패턴 AbstractFactory - 큰 창고 ConcreteFactoryA, ConcreteFactoryB - 창고 내에 있는 1X3 창고, 3X5 창고
AbstractProductA, AbstractProductB - 1X3 도형, 3X5 도형 - 절취선이 없는 도형
ConcreteProductA1,2 | ConcreteProductB1,2 - 1X3 도형, 3X5 도형 - 절취선이 있고 색이 칠해진 도형
팩토리 메소드 패턴
추상 팩토리 패턴 https://yoo-dev.tistory.com/35
팩토리 패턴을 사용하면 결합도를 낮춰준다. 당연하게도 창고에서 도색 작업을 위해 가져올 때 직사각형만 들고 오기 때문이다. 이처럼 동일한 작업을 위해 타입을 일치 시키고, 객체 생성 시 생성 부서로 넘기는 것이다. 팩토리 메서드 패턴의 경우 창고에서 동일한 타입의 다른 절취선을 가진 창고를 만드는 작업이다. 추상 팩토리 패턴의 경우 창고에서 1X3, 3X5 창고를 둘로 나누어 하나의 창고를 통해 들고 오는 것이다. 둘 다 동일하게 도색 작업을 하는 부서에서는 직사각형이라는 도형을 동일하게 받게되는 것이다.