工厂模式
class Study {}
class Teacher {}
// 工厂模式
final class Factory {
public static function getInstance($className) {
if (!class_exists($className)) {
return false;
}
return new $className;
}
}
$study = Factory::getInstance('Study');
$studys = Factory::getInstance('Study');
$teacher = Factory::getInstance('Teacher');
// $test = Factory::getInstance('Test'); // 不存在该类时返回 false
var_dump($study, $studys);
单例工厂模式
class Study {}
class Teacher {}
// 工厂模式
class Factory {
private static $arr = []; // 保存对象的数组属性
public static function getInstance($className) {
if (!class_exists($className)) {
return false;
}
if (!isset(self::$arr[$className])) {
self::$arr[$className] = new $className();
}
return self::$arr[$className];
}
}
$study = Factory::getInstance('Study');
$studys = Factory::getInstance('Study');
$teacher = Factory::getInstance('Teacher');
// $test = Factory::getInstance('Test'); // 不存在该类时返回 false
var_dump($study, $studys);
最终单例工厂
final class Factory {
private static $arr = []; // 保存对象的数组属性
public static function getInstance($className) {
if (!class_exists($className)) {
return false;
}
if (!isset(self::$arr[$className])) {
self::$arr[$className] = new $className();
}
return self::$arr[$className];
}
}