추상 팩토리(Abstract Factory)와 팩토리 메서드(Factory Method)는 객체 생성 패턴입니다. 둘 다 객체 생성을 캡슐화하여 유연하고 확장 가능한 코드를 만들 수 있습니다. 하지만 이들은 서로 다른 목적과 사용 방법을 가지고 있습니다.
추상 팩토리는 "관련된 객체들의 집합을 생성하기 위한 인터페이스를 제공하는 팩토리"입니다. 이 패턴은 구체적인 클래스를 지정하지 않고 객체를 생성합니다. 대신 팩토리 메서드 패턴과 달리 인터페이스를 사용하여 객체를 생성합니다. 이 인터페이스를 구현한 클래스는 관련된 객체를 생성합니다.
예를 들어, 자동차 공장이 있다면, 추상 팩토리는 자동차를 생성하기 위한 인터페이스를 제공합니다. 이 인터페이스는 관련된 부품, 예를 들어 엔진, 타이어, 조명 등을 생성하는 방법을 정의합니다. 자동차 공장은 이 인터페이스를 구현하여 자동차 부품을 생성합니다.
팩토리 메서드 패턴은 "객체를 생성하기 위한 인터페이스를 정의하고, 어떤 클래스의 인스턴스를 생성할 지는 서브클래스에서 결정하게 하는 패턴"입니다. 이 패턴은 객체 생성을 캡슐화하여 코드를 더 유연하고 확장 가능하게 만듭니다.
예를 들어, 색을 생성하는 공장이 있다면, 팩토리 메서드는 "색을 생성하기 위한 인터페이스"를 정의하고, 이를 구현하는 클래스를 만듭니다. 각 클래스는 서로 다른 색을 생성합니다.
What are the differences between Abstract Factory and Factory design patterns?