一、什么是叫做单例模式
单例模式,是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类只有一个实例。即一个类只有一个对象实例,也可以说成,单例模式简称:一个类仅允许创建一个实例
二、为什么使用单例模式(优点)
使用单例模式的好处很大,以数据库操作为例。若不采用单例模式,当程序中出现大量数据库操作时,每次都要执行new操作,
每次都会消耗大量的内存资源和系统资源,而且每次打开和关闭数据库连接都是对数据库的一种极大考验和浪费。使用了单例模式,只需要实例化一次,不需要每次都执行new操作,极大降低了资源的耗费。
实例控制:单例模式会阻止其他对象实例化其自己的单例对象的副本,从而确保所有对象都访问唯一实例。
灵活性:因为类控制了实例化过程,所以类可以灵活更改实例化过程。
三、php单例模式最主要的几个要素(实现单例模式的过程)
1.单例模式的类只提供私有的构造函数.
2.类定义中含有一个该类的静态私有对象.
3.该类提供了一个静态的公有的函数用于创建或获取它本身的静态私有对象.
4.构造函数和克隆函数必须声明为私有的,防止外部程序创建或复制实例副本。
四、php单例模式的缺点(不足之处)
1.开销,虽然数量很少,但如果每次对象请求引用都要检查类是否存在实例化对象,将扔需要一些开销,可以通过静态化方法解决做个问题。
2.开发混淆,使用单例对象时,开发人员必须记住不能使用 new 关键字实例化对象。
五、要怎么实现php单例模式呢?
实例:
class Single
{
* 必须先声明一个静态私有属性:用来保存当前类的实例
static private $instance; // 私有静态属性用以保存对象
private $config;
//私有属性的构造方法 防止被 new
private function __construct ($config)
{
$this ->config = $config;
}
//私有属性的克隆方法 防止被克隆
private function __clone ()
{
}
//静态方法 用以实例化调用
static public function instance($config)
{
if (!self::$instance instanceof self)
{
self::$instance = new self($config);
}
return self::$instance;
}
}
//初始化对象
$single_case = Single::instance("测试实例化-菜菜的小豪");
//结果为:object(Single)[2]
private 'config' => string '测试实例化-菜菜的小豪' (length=31)
以上就php单例模式的详细介绍