本文实例讲述了PHP设计模式之单例模式原理与实现方法。分享给大家供大家参考,具体如下:
一、什么是单例模式
作为对象的创建模式,单例模式确保某一个类只有一个实例,并且对外提供这个全局实例的访问入口。它不会创建实例副本,而是会向单例类内部存储的实例返回一个引用。
二、PHP单例模式三要素
1. 需要一个保存类的唯一实例的静态成员变量。
2. 构造函数和克隆函数必须声明为私有的,防止外部程序创建或复制实例副本。
3. 必须提供一个访问这个实例的公共静态方法,从而返回唯一实例的一个引用。
三、为什么使用单例模式
使用单例模式的好处很大,以数据库操作为例。若不采用单例模式,当程序中出现大量数据库操作时,每次都要执行new操作,每次都会消耗大量的内存资源和系统资源,而且每次打开和关闭数据库连接都是对数据库的一种极大考验和浪费。使用了单例模式,只需要实例化一次,不需要每次都执行new操作,极大降低了资源的耗费。
四、单例模式示例
单例模式 只产生一个实例化对象
[PHP] 纯文本查看 复制代码 class human{
// 定义静态属性 保存生产的对象
private static $object = NULL;
// 构造方法私有化 禁止外部实例化对象
private function __construct(){
echo __METHOD__ . "<br>";
}
/**
* 定义一个静态方法 通过类内部返回实例化对象
* @return object
*/
public static function get_instance(){
// 判断保存的object静态属性对象是否是当前对象
if(!(self::$object instanceof self)){
// 如果不是 就实例化当前对象并保存到object静态属性
self::$object = new self();
}
// 返回对象
return self::$object;
}
}
// 通过静态成员方法访问
$h1 = human::get_instance();
$h2 = human::get_instance();
$h3 = human::get_instance();
以上返回结果
human::__construct
object(human)#1 (0) { } object(human)#1 (0) { } object(human)#1 (0) { }
以上就是本文的全部内容,感谢大家支持JScript之家——编程学习者社区!
|