추상 팩토리 패턴(Abstract Factory Pattern)

INSANEZINDOL·2022년 3월 2일
0

Design Pattern

목록 보기
8/10
post-thumbnail

개요

추상적인 공장(Abstract Factory) 이라는 의미는 언뜻 생각하면 너무 뜬금없는 단어의 조합입니다. 하지만, 조금 더 생각해보면 추상적인 공장에서는 추상적인 제품을 만들 것이라는 말이 될 것이고 그 말은 다시 말해 추상적인 공장은 추상적인 부품을 이용해 추상적인 제품을 만듭니다.

이렇게 말로하면 당췌 무슨말이지 이해하기 힘들지만, 객체지향에 있어 추상(abstract)이란 단어를 생각 할 필요가 있습니다. 객체지향의 추상(abstract)를 생각하면서 다시 설명하면 '구현부에 신경쓰지 않고 인터페이스(API)만 생각'하는 상태라는 의미입니다. 예를 들어 추상 메소드(abstract method)는 실제 로직이 구현되어 있지는 않고, 이름과 파라미터 타입만 정해져 있는 메소드입니다.

정리하자면, 부품의 구현부에 신경쓰지 않고 인터페이스(API)에 집중하여, 인터페이스만을 사용해 부품을 조립하고 제품으로 완성하는 방법입니다.

참고

1. 구체적인 공장을 추가하는것은 간단하다.

'간단하다' 의 의미는 어떤 클래스를 만들고 어떤 메소드를 구현하면 좋을지 명확하다는 의미입니다.
예제코드에서 정의된 추상화된 공장(Factory)를 구현해 새로운 공장을 만든다고하면 Factory,Link,Tray,Page를 상속받는 하위 클래스를 만들어서 추상 메소드를 구현하면 됩니다. 이때 아무리 공장을 추가해도 Abstract Factory부분이나 Main부분을 수정할 필요는 없습니다. 단지 구현되는 새로운 구체적인 공장부분만 변경하면 됩니다.

2. 부품추가는 곤란하다.

지금 예제코드의 공장(Factory)에서는 Link, Tray, Page 부품을 가지고 문서를 구현합니다. 하지만, 사진이나 동영상과 같은 새로운 부품이 추가된다면 Picture, Video 부품이 추가 됩니다. 이럴 경우의 문제는 이미 기존의 부품과 로직으로 구현된 구체적인 공장들도 모두 새로 추가되는 부품에 대해 대응되는 수정을 해야 한다는 것입니다.
기존의 공장을 가지고 구현한 구체적인 공장들이 많을수록 해당 작업은 고되집니다.

profile
Java Backend Developer

0개의 댓글