} } class SecondState implements State { public function execute(Troll $troll) { if ($troll->isSecondState()) { $troll->second(); } } } class ThirdState implements State { public function execute(Troll $troll) { if ($troll->isThirdState()) { $troll->third(); } } } $uid = 10001; $troll = new Troll($uid); $firstState = new FirstState(); $troll->changeState($firstState); $troll->Update(); $secondState = new SecondState(); $troll->changeState($secondState); $troll->Update(); $thirdState = new ThirdState(); $troll->changeState($thirdState); $troll->Update();
public function execute(Troll $troll) { if ($troll->isAttackState()) { $troll->attack(); } else { // todo } } } class RunawayState implements State { public function execute(Troll $troll) { if ($troll->isRunawayState()) { $troll->runaway(); } else { // todo } } } $uid = 10001; $troll = new Troll($uid); $PatrolState = new PatrolState(); $troll->changeState($PatrolState); $troll->Update(); $AttackState = new AttackState(); $troll->changeState($AttackState); $troll->Update(); $RunawayState = new RunawayState(); $troll->changeState($RunawayState); $troll->Update();