单态模式

<?php

//不使用final,允许继承
class cheat
{
    //快速建造的生效状态,用private保护,同时设置static让所有的作弊对象共享
    private static $fastBuild = false;
    //设置快速建造的生效状态的方法,用public为了能够公开调用
    public function setStatus($input)
    {
        //如果输入的秘籍正确,operation cwal是快速建造的秘籍
        if($input === 'operation cwal')
        {
            //像开关一样,逆反状态
            self::$fastBuild = !self::$fastBuild ;
        }
    }
    //读取快速建造的生效状态的方法,用public为了能够公开调用
    public function getStatus()
    {
        return self::$fastBuild ;
    }
}


$cheatInstance1 = new cheat();//新增一个作弊对象
var_dump( $cheatInstance1->getStatus() );//打印状态
$cheatInstance1->setStatus('operation cwal');//输入秘籍
var_dump( $cheatInstance1->getStatus() );//打印状态

$cheatInstance2 = new cheat();//新增一个作弊对象
var_dump( $cheatInstance1->getStatus() );//打印状态 发现和前一个对象共享了同一个状态

/*结论:单态模式不是通过唯一对象来保持一致,它将相关的成员设置为static,
这样即使存在很多个它的对象,但它们共享成员,保持状态的一致
单态模式用途总结:确保某个类所有的对象的成员在某些属性上都一致,同时允许灵活的继承这各类
但相对单件模式而言,系统资源开销要大一些。
单态模式实现总结:把所有相关的成员设置为static。
*/
?>
原文地址:https://www.cnblogs.com/jiufen/p/4991509.html