[php] 팩토리 메서드 디자인 패턴
팩토리 메서드 패턴은 객체 지향 설계에서 사용되는 디자인 패턴 중 하나입니다. 이 패턴은 객체 생성을 캡슐화하여 객체와 객체 생성 코드 간의 의존성을 줄입니다. 팩토리 메서드 패턴은 상위 수준의 모듈이 하위 수준의 모듈에 의존하지 않도록 하는 데 사용됩니다.
패턴 요소
- Product(제품): 생성할 객체의 인터페이스를 정의합니다.
- ConcreteProduct(구체적인 제품): 제품 인터페이스를 구현한 객체입니다.
- Creator(생성자): 제품을 생성하는 팩토리 메서드를 선언한 클래스입니다.
- 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