设计模式学习笔记(1)——单例模式

  • 单例模式是常用的设计模式之一,作为对象的创建模式,单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,特点:
  1. 某个类只能有一个实例,避免重复实例化。
  2. 必须自行创建这个实例,不允许外部实例化,不允许克隆。
  • 举个例子:
<?php
/**
* 设计模式之单例模式
* $_instance必须声明为静态的私有变量
* 构造函数和析构函数必须声明为私有,防止外部程序实例化类。从而失去单例模式的意义
* getInstance()方法必须设置为公有的,必须调用此方法,以返回实例的一个引用
* ::操作符只能访问静态变量和静态函数
* new对象都会消耗内存,使用场景:最常用的地方是数据库连接。使用单例模式生成一个对象后,该对象可以被其它众多对象所使用。 
*/
class Singleton
{
	private static $_instance;

	//阻止用户实例化 实例化抛出Fatal error
	private function __construct(){}

	//阻止用户复制对象实例 抛出Fatal error
	public function __clone()
	{
		throw new Exception("not allow clone this class.");
	}

	//单例方法
	public static function getInstance()
	{
		if(!(self::$_instance instanceof self))
		{
			self::$_instance = new self();
		}

		return self::$_instance;
	}

	public function doSomething()
	{
		echo("to do something");
	}
}

//$singleton = new Singleton(); //Fatal error

$singleton = Singleton::getInstance();

$singleton->doSomething();

//$t = clone $singleton;//Fatal error


posted @ 2017-07-26 22:41  小叮当的肚兜  阅读(143)  评论(0编辑  收藏  举报