팩토리 패턴(Factory Pattern)은 객체 생성 로직을 별도의 클래스나 메서드로 분리해서 캡슐화하는 디자인 패턴입니다. 객체 생성 방법을 코드에서 직접 명시하지 않고, 생성 책임을 팩토리(Factory)에 위임함으로써 유연하고 확장 가능한 코드를 작성할 수 있습니다.


---

💡 쉽게 말해:

팩토리 패턴은 **"객체를 직접 만들지 말고, 공장에 시켜서 만들어 쓰자"**는 개념입니다.


---

✅ 예시 상황:

예를 들어 Shape 인터페이스를 구현한 Circle, Square 클래스가 있다고 할 때, 직접 생성하면 이렇게 됩니다:

Shape s1 = new Circle();
Shape s2 = new Square();

이 방식은 나중에 새로운 도형이 추가되면, 객체 생성 코드를 일일이 수정해야 합니다.

팩토리 패턴을 쓰면:

Shape s1 = ShapeFactory.createShape("circle");
Shape s2 = ShapeFactory.createShape("square");

ShapeFactory가 내부에서 적절한 클래스를 결정해서 객체를 반환합니다.


---

✅ 장점

객체 생성 코드와 비즈니스 로직 분리

코드의 유연성과 확장성 증가

클래스 이름을 직접 알 필요 없이 사용 가능



---

✅ 코드 예시 (Java)

interface Shape {
    void draw();
}

class Circle implements Shape {
    public void draw() {
        System.out.println("원 그리기");
    }
}

class Square implements Shape {
    public void draw() {
        System.out.println("사각형 그리기");
    }
}

class ShapeFactory {
    public static Shape createShape(String type) {
        if (type.equalsIgnoreCase("circle")) {
            return new Circle();
        } else if (type.equalsIgnoreCase("square")) {
            return new Square();
        }
        throw new IllegalArgumentException("Unknown shape type");
    }
}


---

✅ 사용 예 (Spring에서의 적용)

BeanFactory 또는 ApplicationContext도 스프링에서 팩토리 패턴의 응용

전략 패턴과 함께 @Component, @Autowired, @Qualifier 등을 이용해서 동적으로 빈을 선택할 때도 유사한 개념 사용




LIST

+ Recent posts