Contents

디자인 패턴, 생성 패턴에 대하여(3)

   Jul 10, 2023     1 min read

디자인 패턴 중 생성 패턴에 대한 글입니다.

지난 글에선 팩토리 패턴에 대해서 알아보았습니다. 이번에도 한 줄로 설명하자면 객체 생성을 담당하는 별도의 팩토리 클래스를 도입해, 객체 생성 과정을 캡슐화하고 유연성을 제공하는 기법이였습니다.

이번 글에선 생성 패턴 중 추상 팩토리(Abstract Factory) 패턴에 대해 학습하도록 하겠습니다.

추상 팩토리(Abstract Factory) 패턴이란?

이를 설명하기에 앞서 팩토리 패턴의 개념을 알고 넘어가야 하는데요. 팩토리 패턴에서는 하나의 하나의 팩토리 클래스가 인자 값에 따라 조건문을 사용해 다양한 서브 클래스를 리턴하는 형식이였습니다.

추상 팩토리 패턴에서는 팩토리 클래스에서 서브 클래스를 생성하는 데에 있어 조건문을 제외합니다.

TS(Type Script)로 팩토리 패턴을 적용하는 예시를 보여드릴까합니다.

예시

// 추상 팩토리 인터페이스
interface AbstractFactory {
  createProduct(): Product;
}

// WindowsFactory 클래스
export class WindowsFactory implements AbstractFactory {
  createProduct(): Product {
    return new WindowsProduct();
  }
}

// MacFactory 클래스
export class MacFactory implements AbstractFactory {
  createProduct(): Product {
    return new MacButton();
  }
}

// 추상 제품 클래스
abstract class Product {
  abstract operation(): string;
}

// WindowsFactory의 제품 클래스
class WindowsProduct extends Product {
  operation(): string {
    return "Rendering a Windows Product";
  }
}

// MacFactory의 제품 클래스
class MacButton extends Product {
  operation(): string {
    return "Rendering a Mac Product ";
  }
}

// 클라이언트 코드
function createUI(factory: AbstractFactory) {
  const button = factory.createProduct();

  button.operation();
}

// 사용 예시
const windowsFactory = new WindowsFactory();
createUI(windowsFactory);

const macFactory = new MacFactory();
createUI(macFactory);