본문 바로가기

디자인 패턴

팩토리 패턴

팩토리 패턴을 하기 앞서 Java에 인터페이스를 사용하더라도 구현하는 클래스는 new로 계속 생성해 줘야 한다. 이렇게 클래스가 변경 될 때마다 계속 고치게 되면 OCP(확장에는 열려 있고 변경에는 닫혀 있어야 한다)를 못 지키게된다. 이 점을 보안하기 위해서 바뀌는 부분과 안 바뀌는 부분을 분리해서 관리해야 한다.

예시로는 피자집을 들겠다. 피자집에는 여러 종류에 피자가 존재하고 피자마다 재료, 굽는 방식, 걸리는 시간이 다르다. 일단 추상 팩토리 패턴을 사용 안 하고 구현해 보자.

피자 인터페이스

모든 피자가 재료, 굽는 방식, 걸리는 시간이 존재하기 때문에 Pizza라는 인터페이스로 추상화했다. 

Pizza를 구현하는 포테이토, 일반 피자를 생성했다. 손님이 주문할 때마다 일반 피자, 포테이토 피자로 나뉘게 된다. 

위에 코드를 보면 바뀌는 부분과 바뀌지 않는 부분이 존재한다. 이럴 때 바뀌는 부분과 바뀌지 않는 부분을 분리해 주는 것이 팩토리 패턴이다. 변경하는 부분을 PizzaFactory로 구현해 준다.

위에처럼 변경하는 부분과 변경하지 않는 부분을 나누면 변경이 생길 때 PizzaFactory 부분만 변경하면 된다. 그리고 구현하는 부분을 컴파일 할 때 정해지는 게 아니라 런타임 할 때 동적으로 정할 수 있다.

'디자인 패턴' 카테고리의 다른 글

빌더 패턴(builder Pattern)  (0) 2022.07.30
추상 팩토리 패턴( Abstract Factory Pattern)  (0) 2022.07.24
데코레이터 패턴  (2) 2022.06.26
옵저버 패턴(Observer Pattern)  (0) 2022.06.20
전략 패턴(strategy Pattern)  (2) 2022.06.19