[java] 팩토리 메소드 패턴
팩토리 메소드 패턴은 객체 생성을 담당하는 팩토리 메소드를 통해 객체를 생성하는 디자인 패턴 중 하나입니다. 이 패턴을 사용하면 객체의 인스턴스화를 서브클래스에 위임함으로써, 객체 생성을 추상화할 수 있습니다.
팩토리 메소드 패턴의 이점
- 유연성: 팩토리 메소드 패턴을 사용하면 객체 생성 코드를 중앙화하여 유지보수와 확장이 용이해집니다.
- 확장성: 새로운 타입의 객체를 추가하거나 기존 객체를 수정하지 않고도 새로운 팩토리 메소드를 추가하여 다양한 객체를 생성할 수 있습니다.
- 코드 재사용: 비슷한 객체를 생성하는 경우 팩토리 메소드 패턴을 사용하여 중복을 제거하고 코드를 재사용할 수 있습니다.
팩토리 메소드 패턴 예제 - 자바
public interface Product {
void operation();
}
public class ConcreteProduct implements Product {
@Override
public void operation() {
System.out.println("Concrete Product operation");
}
}
public abstract class Creator {
public abstract Product factoryMethod();
public void someOperation() {
Product product = factoryMethod();
product.operation();
}
}
public class ConcreteCreator extends Creator {
@Override
public Product factoryMethod() {
return new ConcreteProduct();
}
}
public class Main {
public static void main(String[] args) {
Creator creator = new ConcreteCreator();
creator.someOperation();
}
}
위 예제에서 Creator
는 팩토리 메소드를 갖고 있으며, ConcreteCreator
서브클래스에서 factoryMethod
를 구현하여 실제 객체를 생성합니다. Main
클래스에서 ConcreteCreator
를 이용하여 Product
를 생성 및 활용하는 예제를 볼 수 있습니다.
요약
팩토리 메소드 패턴은 객체 생성을 서브클래스로 위임하여 유연성, 확장성 및 코드 재사용성을 높일 수 있는 디자인 패턴입니다. 이 패턴을 사용하면 객체 생성과 관련된 클래스들을 효과적으로 구조화할 수 있습니다.
참고 자료
- Design Patterns: Elements of Reusable Object-Oriented Software by Gamma, Erich, Helm, Richard, Johnson, Ralph, Vlissides, John
- Refactoring Guru: Factory Method
#designpatterns #java #design #factorymethod