星际争霸允许玩家作弊,当然这是在人和电脑对战的时候。而且作弊有个特点,比如快速建造,能量无限是对所有的玩家(包括电脑)都生效,如果关闭了作弊,对所有的玩家的作用都同时消失。
这也就是说如果我们把作弊状态作为一个类,他只能有一个对象。
待解决的问题:确保某个类只能有一个对象。
思路:把对外新建对象的权利都收回,包括new,clone。为了防止通过子类来覆盖父类的方法和成员,将类设置为final。用static成员来保存唯一的对象
单件模式示例:
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