[php] 팩토리 메서드 디자인 패턴

팩토리 메서드 패턴은 객체 지향 설계에서 사용되는 디자인 패턴 중 하나입니다. 이 패턴은 객체 생성을 캡슐화하여 객체와 객체 생성 코드 간의 의존성을 줄입니다. 팩토리 메서드 패턴은 상위 수준의 모듈이 하위 수준의 모듈에 의존하지 않도록 하는 데 사용됩니다.

패턴 요소

  1. Product(제품): 생성할 객체의 인터페이스를 정의합니다.
  2. ConcreteProduct(구체적인 제품): 제품 인터페이스를 구현한 객체입니다.
  3. Creator(생성자): 제품을 생성하는 팩토리 메서드를 선언한 클래스입니다.
  4. ConcreteCreator(구체적인 생성자): 실제로 제품을 생성하는 클래스입니다.

예제

다음은 PHP에서의 간단한 팩토리 메서드 패턴의 예제 코드입니다.

<?php
// 제품 인터페이스
interface Product {
    public function getName(): string;
}

// 구체적인 제품
class ConcreteProduct implements Product {
    public function getName(): string {
        return "Concrete Product";
    }
}

// 생성자
interface Creator {
    public function factoryMethod(): Product;
}

// 구체적인 생성자
class ConcreteCreator implements Creator {
    public function factoryMethod(): Product {
        return new ConcreteProduct();
    }
}

// 사용 예
$creator = new ConcreteCreator();
$product = $creator->factoryMethod();
echo $product->getName(); // 출력: Concrete Product
?>

이 예제에서는 제품(Product)과 제품을 생성하는 방법(팩토리 메서드)을 인터페이스로 정의하고, 이를 구현하는 ConcreteProduct와 ConcreteCreator 클래스를 만들었습니다.

팩토리 메서드 디자인 패턴을 사용하면 제품을 생성하는 코드를 캡슐화하여 유지보수성을 높이고, 객체 간의 결합도를 줄일 수 있습니다.

결론

팩토리 메서드 디자인 패턴은 객체 생성 관련 코드의 복잡성을 줄이고 유연한 설계를 가능하게 합니다. 이는 소프트웨어의 확장성과 유지보수성을 향상시키는 데 도움이 됩니다.

참조: https://www.tutorialspoint.com/design_pattern/factory_pattern.htm