星际争霸允许玩家作弊,当然这是在人和电脑对战的时候。而且作弊有个特点,比如快速建造,能量无限是对所有的玩家(包括电脑)都生效,如果关闭了作弊,对所有的玩家的作用都同时消失。
这也就是说如果我们把作弊状态作为一个类,他只能有一个对象。
待解决的问题:确保某个类只能有一个对象。
思路:把对外新建对象的权利都收回,包括new,clone。为了防止通过子类来覆盖父类的方法和成员,将类设置为final。用static成员来保存唯一的对象
单件模式示例:
立即学习“PHP免费学习笔记(深入)”;
<?php //将类设置为final,禁止其他类继承它
final class cheat {
//快速建造的生效状态,用private保护
private $fastBuild = false;
//用static成员来保存唯一的对象
private static $instance;
//设置快速建造的生效状态的方法,用public为了能够公开调用
public function setStatus($input)
{
//如果输入的秘籍正确,operation cwal是快速建造的秘籍
if($input === 'operation cwal')
{
//像开关一样,逆反状态
$this->fastBuild = !$this->fastBuild ;
}
}
//读取快速建造的生效状态的方法,用public为了能够公开调用
public function getStatus()
{
return $this->fastBuild ;
}
//获取唯一对象的唯一方法
public function getInstance()
{
//如果对象没有被新建,则新建它
if(!isset(self::$instance))
{
self::$instance = new cheat() ;
}
return self::$instance ;
}
//用private来禁止在本类以外new对象
private function
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号