Lined Notebook

팩토리 패턴 ★★★

by yjym33

팩토리 패턴의 개념


1. 객체 생성의 추상화


팩토리 패턴은 객체 생성 과정을 캡슐화하고 객체 생성을 추상화하는 디자인 패턴입니다.
클라이언트 코드가 직접 객체를 생성하는 대신 팩토리 메서드를 사용하여 객체를 얻을 수 있습니다.


2. 객체 생성 방법의 다양화


팩토리 패턴을 사용하면 객체 생성 방법을 다양화할 수 있습니다. 클라이언트 코드는 어떤 구체적인 클래스가 객체를 생성하는지 알 필요가 없습니다.


3. 인터페이스와 추상화


팩토리 패턴은 인터페이스나 추상 클래스를 사용하여 클라이언트 코드와 구체적인 팩토리 클래스를 분리합니다.

 

팩토리 패턴의 장점


유지보수성 향상: 객체 생성 로직을 한 곳에 집중시키므로 코드의 유지보수가 쉬워집니다. 객체 생성 변경 시 해당 팩토리만 수정하면 됩니다.

객체 생성의 추상화: 클라이언트 코드는 객체의 구체적인 클래스를 알 필요 없이 팩토리를 통해 객체를 생성할 수 있습니다.

의존성 관리: 팩토리 패턴을 사용하면 객체 간의 의존성을 줄일 수 있으며, 인터페이스를 통해 의존성을 주입할 수 있습니다.

확장성: 새로운 클래스를 추가하거나 기존 클래스를 변경하여 객체 생성 방법을 확장하기 쉽습니다.

 

팩토리 패턴의 종류


1. 간단한 팩토리 패턴 (Simple Factory Pattern)


하나의 팩토리 메서드를 사용하여 객체를 생성하는 패턴입니다.
팩토리 메서드 내에서 분기 논리를 사용하여 객체의 타입을 결정합니다.
유연성이 낮고 객체 생성 로직이 한 곳에 집중되기 때문에 확장성이 제한적입니다.


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


여러 개의 팩토리 메서드를 가진 추상 클래스나 인터페이스를 사용하여 객체 생성을 위임하는 패턴입니다.
각 팩토리 메서드는 특정 객체를 생성하는 책임을 가지며, 클라이언트 코드는 이러한 팩토리 메서드 중 하나를 선택하여 객체를 생성합니다.
확장성이 높고 새로운 객체를 추가하거나 기존 객체를 변경하기 쉽습니다.


3. 추상 팩토리 패턴 (Abstract Factory Pattern)


관련된 객체 그룹을 생성하기 위한 패턴으로, 여러 개의 팩토리들의 집합을 제공합니다.
클라이언트 코드는 추상 팩토리를 사용하여 관련된 객체 그룹을 생성하며, 구체적인 팩토리는 특정 객체들의 생성 방법을 제공합니다.
객체들 간의 호환성을 유지하면서 객체들을 생성하는 데 사용됩니다.

 

팩토리 패턴의 구현


팩토리 패턴은 다음과 같은 구조를 가집니다.

// 팩토리 인터페이스 또는 추상 클래스
class Factory {
  createProduct() {
    // 객체 생성 로직
  }
}

// 구체적인 팩토리 클래스
class ConcreteFactory extends Factory {
  createProduct() {
    return new Product();
  }
}

// 생성될 객체
class Product {
  // ...
}

// 클라이언트 코드
const factory = new ConcreteFactory();
const product = factory.createProduct();

구체적인 팩토리 클래스(ConcreteFactory)에서 createProduct 메서드를 오버라이딩하여 실제 객체 생성 로직을 구현합니다. 클라이언트 코드에서는 팩토리를 통해 객체를 생성하고 사용할 수 있습니다.

 

'Development > CS' 카테고리의 다른 글

전략패턴 ★★★  (0) 2023.09.25
DI와 DIP ★★★  (0) 2023.09.25
싱글톤 패턴 ★★★  (0) 2023.09.24
라이브러리와 프레임워크의 차이 ★★★  (1) 2023.09.24
디자인 패턴 ★★★  (0) 2023.09.24

블로그의 정보

생각보다 실천을

yjym33

활동하기