版权声明:本文为博主原创文章,转载请标注: https://blog.csdn.net/hongyuancao/article/details/83657973
单例模式: 单例模式又称为职责模式,它用来在程序中创建一个单一功能的访问点,通俗地说就是实例化出来的对象是唯一的。
所有的单例模式至少拥有以下三个必须和一个必要元素:
1 | 必须拥有一个private的构造函数 |
2 | 必须拥有一个保存类的实例的静态成员变量 |
3 | 必须拥有一个访问这个实例的公共的静态方法 |
4 | 必要拥有一个防止克隆的函数 |
单例类不能再其它类中直接实例化,只能被其自身实例化。它不会创建实例副本,而是会向单例类内部存储的实例返回一个引用。
下面是代码演示:
class people
{
//静态成员变量
static private $instance;
private $config;
// private的构造函数
private function __construct($config){
$this->config = $config;
}
// 防克隆函数
private function __clone(){
// TODO: Implement __clone() method.
}
// 静态方法
static public function getConfig($config){
if (!self::$instance instanceof self) {
self::$instance = new self($config);
}
return self::$instance;
}
public function getName(){
echo $this->config;
}
}
运行以下代码:
$a = people::getConfig(1);
$a->getName();
echo "<br/>";
$b = people::getConfig(3);
$b->getName();
网页会显示:
$a创建对象后,参数是1 ;
$b没有创建对象,而是直接使用$instance保存的唯一对象,所以输出的参数并没有变为3。
参考资料:
https://www.cnblogs.com/yuyu1993/p/5576010.html
http://www.cnblogs.com/DeanChopper/p/4761253.html
https://www.cnblogs.com/wwjchina/p/7724271.html
欢迎补充!
千而の大狮子!