Home 팩토리 메서드 패턴(Factory Method Pattern)
Post
Cancel

팩토리 메서드 패턴(Factory Method Pattern)


팩토리 메서드 패턴이란?

  • 객체의 생성을 캡슐화 하는 패턴이다.
  • 구체적인 객체의 생성 과정을 팩토리모듈화하여 구체적인 부분이 아닌 추상적인 부분에 의존할 수 있도록 한다.
  • 팩토리 메서드 패턴추상 팩토리 패턴이 존재한다.
  • 객체를 생성할 때 어떤 클래스의 인스턴스를 만들 지 서브 클래스에서 결정하게 한다.

장단점

장점

  • 캡슐화: 기존 코드를 수정하지 않고 새로운 인스턴스를 다른 방법으로 생성하도록 확장할 수 있다.
  • 객체지향적: 확장에는 열려있고 변경에는 닫혀있는 구조가 된다.

단점

  • 복잡도 증가: 클래스가 많아지는 구조이다.

구현 예제

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
  }
}

마치며

팩토리 메소드 패턴을 사용하는 이유는 클래스간의 결합도를 낮추기 위한 것이다.
직접 객체를 생성해 사용하는 것을 방지하고 서브 클래스에 위임함으로써 보다 효율적인 코드 제어를 할 수 있고 의존성을 제거한다.

참고

This post is written by PRO.