什么是单例模式?
先看一下百度百科上的定义:
是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中,应用该模式的一个类只有一个实例。即一个类只有一个对象实例。
所以呢单例模式的单例的意思就是这个类只有一个实例,不能被重复实例化。
目的是使得类的一个对象成为系统中的唯一实例。
怎样实现单例模式?
首先如果想实现类只被实例话一次,就必须得让类只有一个地方可以可以实例,然后让这个地方直接返回类的实例,所以这个方法必须得是静态公开的,这样才可以直接调用。
然后还需要一个变量可以存储类的实例。
最后需要一个构造函数,让构造函数可以判断存储实例的变量是否已经被实例化,如果已经存储了实例则不做任何事情,如果没有存储被实例化的类,则把类实例话之后复制给变量。
准确一点是这样的:
- 私有化的构造函数,私有化clone。保证不能不能new,不能clone。【唯一】
- 拥有一个静态变量,用于保存当前的类。【保存】
- 提供一个公共的访问入口。【访问】
<?php
class SingleClass {
//私有化变量
private static $single;
//计数器
private $num = 1;
//私有化的构造函数
private function __construct()
{
//
}
//私有化对象复制
pri