728x90
팩토리 패턴(Factory pattern)
객체를 사용하는 코드에서 객체 생성 부분을 떼어내 추상화한 패턴이자,
상속관계에 있는 두 클래스에서 상위 클래스가 중요한 뼈대를 결정하고, 하위 클래스에서 객체 생성에 관한 구체적인 내용을 결정하는 패턴
장점
- 느슨한 결합
- 상위클래스에서는 인스턴스 생성 방식에 대해 알필요가 없기 때문에 많은 유연성을 갖게 된다.
- 객체 생성 로직이 독립적이기 때문에 코드를 리팩터링하기 용이하여, 유지 보수성이 증가된다.
자바에서의 팩토리 패턴
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) {
switch (type) {
case LATTE:
return new Latte();
case ESPRESSO:
return new Espresso();
default:
throw new IllegalArgumentException("Invalid coffee type: " + type);
}
}
}
public class Main {
public static void main(String[] args) {
Coffee coffee = CoffeeFactory.createCoffee(CoffeeType.LATTE);
System.out.println(coffee.getName()); // latte
}
}
Enum
상수의 집합을 정의할 때 사용되는 타입이다. 상수나 메서드 등을 집어넣어 관리하며 코드를 리팩터링할 때 해당 집합에 관한 로직 수정 시 이 부분만 수정하면 되므로 코드 리팩터링 시 강점이 생긴다.
'Book > 면접을 위한 CS 전공지식 노트' 카테고리의 다른 글
| [1장] 디자인 패턴과 프로그래밍 패러다임 - 전략 패턴 (0) | 2023.09.17 |
|---|---|
| [1장] 디자인 패턴과 프로그래밍 패러다임 - 싱글톤 패턴 (0) | 2023.09.17 |