Design Patterns: Factory Method en PHP

Factory Method est un design pattern qui résout le problème de création d’objets sans spécifier leurs classes concrètes.

Factory Method définit une méthode qui doit être utilisée pour créer des objets au lieu d’un appel direct de constructeur (opérateur new). Les sous-classes peuvent remplacer cette méthode pour changer la classe d’objets qui seront créés.
 
 
Prenons un exemple, on a la classe ProductCommand qui gère les commandes de produits. Chaque fois qu’un nouveau produit est commandée, nous appelons la méthode ‘command’ et passons le type de produit en paramètre (type « a » ou « b »). La méthode ‘make’ crée ensuite un nouvel objet ‘prod’ (basé sur le paramètre) et enfin la méthode ‘command’ ajoute l’objet nouvellement créé au tableau $prodCmd qui stocke la liste des produits commandées.

<?php
class ProductCommand {
  protected $prodCmd = array();
  protected $prod;
  
  // fabriquer le produit.
  protected function make($type=null)
  {
    if($type == 'a')
      return $this->prod = new ProductA();
	else
      return $this->prod = new ProductB();
  }

  // Commander le produit.
  public function command($type=null)
  {
    $prod = $this->make($type);
    $this->prodCmd[] = $prod->getName();
  }

  public function getProdCmd()
  {
    return $this->prodCmd;
  }
}
?>

Le code ci-dessus montre la fabrication des objets dans une méthode de création dédiée appelée ‘make’. Cette approche est également connue sous le nom de Factory Method.
 

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *