工厂模式 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); 单例工厂模式 <?php 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]; } }