设计模式之单例模式

单例模式

什么是单例模式,单例模式的作用是什么?

  1. 首先,单例模式也是我们设计模式中,最基本,经常使用的一种模式!在我们的业务代码当中,本来我们要通过Db来查询数据库,但是我们如果不是用的单例模式的时候,每次查询都要重复new Db对象并使用,这个地方就造成了系统资源的浪费。所以我们最常见的单例模式的使用,就是在数据库操作当中以及其他的I/O操作。

  2. 单例类只能有一个实例。

  3. 单例类必须自己创建自己的唯一实例。

  4. 单例类必须给所有其他对象提供这一实例。

下面实现一个简单的单例类

<?php
//创建单例
class Singleton {
	// 实例对象
	private static $_instance = null; 
	
	/**
	 * 声明一个私有的构造函数,方式通过new来实例化
	 * 关闭: 通过初始化来实例化对象
	 */
	private function __construct() {
		
	}
	
	/**
	 * 获取对象实例
	 */
	public static function getInstance() {
		// 第一次实例化开始时, self::$_instance=null
		if (is_null(self::$_instance)) {
			// 给实例属性赋值     实例化当前类
			self::$_instance = new self();
		}
		// 第二次实例化时,self::$_instance!=null
		return self::$_instance;
	}
	
	/**
	 * 关闭clone对象复制的开关
	 */
	public function __clone() {
		die("单例模式不能克隆");
	}
}

如何使用这个单例类来获取我们的实例的

<?php
Singleton::getInstance(); // 首次初始化(实例化)

通过上面的例子,我们实现了单例模式,无论我们怎样实例化类,都只能实例化一次类,大大的节省里系统资源的创建和销毁的开销

设计模式的教程文档地址: 设计模式文档

设计模式的视频教程地址(Rango的大话PHP设计模式):大话PHP设计模式

北溟有鱼QAQ博客
请先登录后发表评论
  • 最新评论
  • 总共2条评论
北溟有鱼QAQ博客

北溟有鱼QAQ(张松)北溟有鱼QAQ博客

2019-08-28 14:54:25 回复

北溟有鱼QAQ博客

LuffyQAQ:6666666666666

2019-08-28 14:52:59 回复