PHP设计模式汇总(3)—— PHP单例模式
2022-05-31MYSQL
PHP一个主要应用场合就是应用程序与数据库打交道的场景,在一个应用中会存在大量的数据库操作,针对数据库句柄连接数据库的行为,使用单例模式可以避免大量的new操作。因为每一次new操作都会消耗系统和内存的资源。
单例模式
单例模式是一种常见的设计模式,在计算机系统中,线程池、缓存、日志对象、对话框、打印机、数据库操作、显卡的驱动程序常被设计成单例。
单例模式特点
1.只能有一个实例。
2.必须自行创建这个实例。
3.必须给其他对象提供这一实例。
那么为什么要使用PHP单例模式?
PHP单例模式的一个主要应用场合就是应用程序与数据库打交道的场景,在一个应用中会存在大量的数据库操作,针对数据库句柄连接数据库的行为,使用单例模式可以避免大量的new操作。因为每一次new操作都会消耗系统和内存的资源。
单例模式示例代码
<?php // 判断,保证只有一个对象 class Single { private $rnd; private static $_instance = null; private function __construct() { $this->rnd = mt_rand(10000,99999); } // 私有化克隆函数,防止外界克隆对象 private function __clone(){} public static function getInstance() { if(self::$_instance === null) { self::$_instance = new self(); } return self::$_instance; } } $s1 = Single::getInstance(); $s2 = Single::getInstance(); // 这里会打印出s1和s2的对象是一样的 print_r($s1); print_r($s2); // 代码中有private function __clone(){}防止克隆 $s3 = clone $s2; print_r($s3);
代码总结
1. 需要一个保存类的唯一实例的静态成员变量(通常为$_instance私有变量)
2. 构造函数和克隆函数必须声明为私有(private)的,这是为了防止外部程序new类从而失去单例模式的意义
3. 必须提供一个访问这个实例的公共的静态方法(通常为getInstance方法),从而返回唯一实例的一个引用
经典的设计模式:
(后续待更新)
很赞哦! ()