单例设计模式(单态)

/*

单例设计模式 (单态)

定义: 一个类 只能允许有 一个对象存在.
1.不让进: 使类不能被实例化
2.留后门: 设置静态方法
3.给对象: 在静态方法里实例化该类
4.判初夜: 判断是否是 第一次产生该类的对象
5.设静态: 静态方法里 要使用静态属性

*/

/*//

1.不让进: 使类不能被实例化-----------------

class Test
{
// 设置 一个封装的构造方法
private function __construct()
{
//占位, 我就是不让你NEW我~~~
}
}*/

/*//

2.留后门: 设置静态方法--------------------

class Test
{
// 设置 一个封装的构造方法
private function __construct()
{
//占位, 我就是不让你NEW我~~~
}
//后门
public static function getObject()
{
echo “啊,我是后门,进吧!
”;
}
}*/

/*//

3.给对象: 在静态方法里实例化该类------------------

class Test
{
// 设置 一个封装的构造方法
private function __construct()
{
//占位, 我就是不让你NEW我~~~
}
//后门
public static function getObject()
{
echo “啊,我是后门,进吧!
”;
return new self();//实例化一个对象给你
}
}*/

/*//

4.判初夜: 判断是否是 第一次产生该类的对象------------------

class Test
{
private KaTeX parse error: Expected group after '_' at position 70: …ivate function _̲_construct() …this->obj === null) {
$this->obj = new self();//实例化一个对象
}
//返回的属性 其实就是本对象
return $this->obj;
}
}*/

//

5.设静态: 静态方法里 要使用静态属性------------------

class Test
{
private static KaTeX parse error: Expected group after '_' at position 70: …ivate function _̲_construct() …obj === null) {
self::KaTeX parse error: Expected 'EOF', got '}' at position 36: …例化一个对象 }̲ //返回的属…obj;
}
}

/Test::getObject();//使用静态方法访问该类里的方法
exit;
/

$t1 = Test::getObject();
$t2 = Test::getObject();
$t3 = Test::getObject();
$t4 = Test::getObject();
$t5 = Test::getObject();
$t6 = Test::getObject();
$t7 = Test::getObject();
$t8 = Test::getObject();

//判断 两个对象 是否是同一个对象
if ($t1 === $t6) {
echo “哦, Yes! 是同一个实例
”;
} else {
echo “哦, No! 不是同一个实例
”;
}

作者:独身待苍颜
链接:https://www.zhihu.com/question/35285158/answer/141024074
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

猜你喜欢

转载自blog.csdn.net/weixin_43272542/article/details/113991059