以下文字部分均为本人自己的想法与总结所以未必正确;
代码部分摘录自https://github.com/flyingalex/design-patterns-by-php
单例模式:
概念:确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例
特点:三私一公
私有的构造方法 (防止类外实例化)
私有的克隆方法 (防止通过克隆生成对象)
私有的静态属性 (保存类的实例)
公有的静态方法 (调取这个类相当一个接口 )
操作步骤:
1、创建一个类,该类的构造方法为私有
2、该类有一个私有的__clone方法来防止被克隆
3、该类有一个静态的变量$instance来保存实例
4、该类有一个getInstance的静态方法来实例化自身,并将实例保存在静态变量$instance中
个人理解:
单例模式保证了全局只存在该类的一个实例,也就是全局共享的一个对象。比如数据库连接、计数器等可以使用单例模式。
class Singleton
{
private static $instance;
private function __construct(){}
private function __clone(){}
public static function getInstance()
{
if (static::$instance == null)
{
static::$instance = new Singleton();
}
return static::$instance;
}
}
//客户端代码
$s1 = Singleton::getInstance();
$s2 = Singleton::getInstance();
if ($s1 == $s2)
{
echo "same class";
}