팩토리 메서드 패턴이란?
- 객체의 생성을 캡슐화 하는 패턴이다.
- 구체적인 객체의 생성 과정을
팩토리
로모듈화
하여 구체적인 부분이 아닌 추상적인 부분에 의존할 수 있도록 한다. 팩토리 메서드 패턴
과추상 팩토리 패턴
이 존재한다.- 객체를 생성할 때 어떤 클래스의 인스턴스를 만들 지 서브 클래스에서 결정하게 한다.
장단점
장점
캡슐화
: 기존 코드를 수정하지 않고 새로운 인스턴스를 다른 방법으로 생성하도록 확장할 수 있다.객체지향적
: 확장에는 열려있고 변경에는 닫혀있는 구조가 된다.
단점
복잡도 증가
: 클래스가 많아지는 구조이다.
구현 예제
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
enum CoffeeType {
LATTE,
ESPRESSO
}
abstract class Coffee {
protected String name;
public String getName() {
return name;
}
}
class Latte extends Coffee {
public Latte() {
name = "latte";
}
}
class Espresso extends Coffee {
public Espresso() {
name = "Espresso";
}
}
class CoffeeFactory {
public static Coffee createCoffee(CoffeeType type) {
return switch (type) {
case LATTE -> new Latte();
case ESPRESSO -> new Espresso();
};
}
}
public class Main {
public static void main(String[] args) {
Coffee coffee = CoffeeFactory.createCoffee(CoffeeType.LATTE);
System.out.println(coffee.getName()); // latte
}
}
마치며
팩토리 메소드 패턴을 사용하는 이유는 클래스간의 결합도
를 낮추기 위한 것이다.
직접 객체를 생성해 사용하는 것을 방지하고 서브 클래스에 위임
함으로써 보다 효율적인 코드 제어를 할 수 있고 의존성을 제거
한다.