ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
* [ ] 工厂模式:工厂方法或者类生成对象,而不是在代码中直接new * [ ] 单例模式: 使某个类的对象仅允许创建一个 * [ ] 注册模式: 全局共享和交换对象(在thinkphp中叫容器类,对象池) ***** > 工厂模式:就是创建一个工厂类,在此类中new或实例化别的对象,注意它的方法是用static,其它类中可以直接调用而不用实例化. > 单例模式: 就是不能被直接实例化的一个类,比如我们创建一个数据库连接类,使用单例模式创建,代码下: ``` namespace common; class Database { protected static $instance; private function __construct() { } public static function getInstance() { if(self::$instance) { return self::$instance; }else { self::$instance = new self(); return self::$instance; } } public static function connect() { return 'mysql连接成功'; } } ``` **工厂模式结合单例模式的用法:** ``` namespace common; require 'common/Database.php'; class Factory { public static function createDatabase() { $db = Database::getInstance(); return $db; } } ``` **注册树模式:就是将类挂到全局树上面,方便其它类调用** namespace common; ``` class Register { protected static $objects public static function set($alias, $object) { self::$objects[$alias] = $object; } public static function get($name) { return self::$objects[$name]; } private function _unset($alias) { unset($objects[$alias]); } } ``` ### 入口文件调用 ``` require 'common/Factory.php'; require 'common/Register.php'; use common\Register; use common\Factory; Register::set('db1',Factory::createDatabase()); $db=Register::get('db1'); var_dump($db::connect()); ```