杉哥的个人博客

php工厂模式与工厂生产单例对象

该类的作用就是帮助其他的类“生产”对象,也就是说,只要传递给这个“工厂”一个类名,就可以得到一个相应的对象。

工厂生产单例对象

一种单例的实现,但是不是三私一公的实现,而是在生产对象的工厂方法上处理

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
/**
* 利用工厂得到单例对象
*/
class Factory {
public static function getOBJ($class_name) {
static $obj_list = array(); // 保存已经实例化好了的对象
// 类名字就是元素的下标,对象本身就是元素的值
if(!isset($obj_list[$class_name])) {
if(file_exists('./' . $class_name . '.class.php')) {
include_once './' . $class_name . '.class.php';
}
$obj_list[$class_name] = new $class_name;
}
return $obj_list[$class_name];
}
}
/** * 利用工厂得到单例对象 */ class Factory { public static function getOBJ($class_name) { static $obj_list = array(); // 保存已经实例化好了的对象 // 类名字就是元素的下标,对象本身就是元素的值 if(!isset($obj_list[$class_name])) { if(file_exists('./' . $class_name . '.class.php')) { include_once './' . $class_name . '.class.php'; } $obj_list[$class_name] = new $class_name; } return $obj_list[$class_name]; } }
/**
 * 利用工厂得到单例对象
 */
class Factory {
  public static function getOBJ($class_name) {
    static $obj_list = array(); // 保存已经实例化好了的对象
    // 类名字就是元素的下标,对象本身就是元素的值
    if(!isset($obj_list[$class_name])) {
      if(file_exists('./' . $class_name . '.class.php')) {
        include_once './' . $class_name . '.class.php';
      }
      $obj_list[$class_name] = new $class_name;
    }
    return $obj_list[$class_name];
  }
}