PHP/Design Patterns/Factory Pattern

Материал из Web эксперт
Перейти к: навигация, поиск

Factory pattern Demo

<?php
class ClassFactory{
   private $registeredClasses = array();
   static private $instance = NULL;
   private function __construct() {}
   static function getInstance(){
      if(self::$instance == NULL){
         self::$instance = new ClassFactory();
      }
      return self::$instance;
   }
   function registerClass($id, $creator_func){
      $this->registeredClasses[$id] = $creator_func;
   }
   function createObject($id, $args) {
     if(!isset($this->registeredClasses[$id])){
        return(NULL);
     }
     return($this->registeredClasses[$id]($args));
   }
}
function MyClassCreator(){
   return "creator";
}

$factory = ClassFactory::getInstance();
$factory->registerClass(1, "MyClassCreator");
$instance = $factory->createObject(1, array());
?>