PHP/Design Patterns/Factory Pattern

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

Factory pattern Demo

   <source lang="html4strict">

<?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()); ?>

      </source>