<?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。 */ ?>