• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    php设计模式之策略模式实例分析【星际争霸游戏案例】

    本文实例讲述了php设计模式之策略模式。分享给大家供大家参考,具体如下:

    星际开地图对战,等5秒钟进入地图后,每个玩家都会拥有一个基地,几个农民等,还会有初始的人口供给。但这些是根据种族的不同而不同。

    待解决的问题:我们需要根据种族的不同,而对玩家进行不同的初始化,最好将这些不同的处理方式封装。

    思路:定义初始化的接口,然后制作不同种族的初始化类。

    策略模式(Strategy)示例:

    为了使代码不至于过长,一部分类的定义不在此写出,如果要调试,请用字符串等方式替代new。

    ?php
      //玩家的类
      class player
      {
        //所属种族
        public $race;
    
        //部队
        public $army;
    
        //建筑
        public $building;
    
        //人口供给
        public $supply;
    
        //构造函数,设定所属种族
        public function __construct($race)
        {
          $this->race = $race;
        }
      }
    
      //初始化的接口
      interface initialPlayer 
      {
        //制造初始化的部队
        public function giveArmy($player);
    
        //制造初始化的建筑
        public function giveBuilding($player);
    
        //初始化人口供给
        public function giveSupply($player);
      }
    
      //虫族的初始化算法
      class zergInitial implements initialPlayer 
      {
        //制造初始化的部队
        public function giveArmy($player)
        {
          //一个Overlord
          $player->army[] = new Overlord();
    
          //四个虫族农民
          for($i=0; $i4;$i++)
          {
            $player->army[] = new Drone();
          }
        }
    
        //制造初始化的建筑
        public function giveBuilding($player)
        {
          //一个基地
          $player->building[] = new Hatchery();
        }
    
        //初始化人口供给
        public function giveSupply($player)
        {
          //虫族初始人口供给为9
          $player->supply = 9;
        }
      }
    
      //人族的初始化算法
      class terranInitial implements initialPlayer 
      {
        //制造初始化的部队
        public function giveArmy($player)
        {
          //四个人族农民
          for($i=0; $i4;$i++)
          {
            $player->army[] = new SVC();
          }
        }
    
        //制造初始化的建筑
        public function giveBuilding($player)
        {
          //一个基地
          $player->building[] = new Hatchery();
        }
    
        //初始化人口供给
        public function giveSupply($player)
        {
          //人族初始人口供给为10
          $player->supply = 10;
        }
      }
    
      //初始化的控制类
      class initialController 
      {
        //构造函数,参数为玩家的数组
        public function __construct($playerArray)
        {
          foreach ($playerArray as $player)
          {
            switch ($player->race)
            {
              case 'zerg':
                $initialController = new zergInitial();
                break;
              case 'terran':
                $initialController = new terranInitial();
                break;
            }
    
            $initialController->giveArmy($player);
            $initialController->giveBuilding($player);
            $initialController->giveSupply($player);
          }
        }
      }
    
      //假设两个虫族,一个人族
      $playerArray = array(
        new player('zerg'), 
        new player('zerg'), 
        new player('terran'),
      );
    
      //进行初始化工作
      $initialController = new initialController($playerArray);
    ?>
    
    

    用途总结:策略模式可以将不同情况下的算法封装,根据具体的情况调用。

    实现总结:需要一个接口,规定算法规范,使用者(比如初始化来)只要调用对应的算法就可以了。

    更多关于PHP相关内容感兴趣的读者可查看本站专题:《php面向对象程序设计入门教程》、《PHP数组(Array)操作技巧大全》、《PHP基本语法入门教程》、《PHP运算与运算符用法总结》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

    希望本文所述对大家PHP程序设计有所帮助。

    您可能感兴趣的文章:
    • php设计模式 Strategy(策略模式)
    • 学习php设计模式 php实现策略模式(strategy)
    • PHP设计模式之策略模式(Strategy)入门与应用案例详解
    • php设计模式之策略模式应用案例详解
    • PHP设计模式之策略模式原理与用法实例分析
    • PHP实现的策略模式简单示例
    • PHP策略模式定义与用法示例
    • PHP设计模式之观察者模式(Observer)详细介绍和代码实例
    • php设计模式 Template (模板模式)
    • PHP常用的三种设计模式汇总
    • php设计模式 Proxy (代理模式)
    • PHP设计模式之 策略模式Strategy详解【对象行为型】
    上一篇:php设计模式之状态模式实例分析【星际争霸游戏案例】
    下一篇:PHP实现基本留言板功能原理与步骤详解
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    php设计模式之策略模式实例分析【星际争霸游戏案例】 php,设计模式,之,策略,模式,