php教程:php设计模式介绍之值对象模式(3)_PHP技巧_黑客防线网安服务器维护基地--Powered by WWW.RONGSEN.COM.CN

php教程:php设计模式介绍之值对象模式(3)

作者:黑客防线网安PHP教程基地 来源:黑客防线网安PHP教程基地 浏览次数:0

本篇关键词:模式对象教程介绍
黑客防线网安网讯:  详细例子:    让我们在一下更加复杂的例子中查看值对象模式的功能。    让我们开始实现一个的基于PHP5中Dollar类中的一个Monopoly游戏。    第一个类Monopoly的框架如下:...
  详细例子:
  
  让我们在一下更加复杂的例子中查看值对象模式的功能
  
  让我们开始实现一个的基于PHP5中Dollar类中的一个Monopoly游戏
  
  第一个类Monopoly的框架如下:
  
  classMonopoly{
  
  protected$go_amount;
  
  /**
  
  *gameconstructor
  
  *@returnvoid
  
  */
  
  publicfunction__construct(){
  
  $this->go_amount=newDollar(200);
  
  }
  
  /**
  
  *payaplayerforpassing揋o?/span>
  
  *@paramPlayer$playertheplayertopay
  
  *@returnvoid
  
  */
  
  publicfunctionpassGo($player){
  
  $player->collect($this->go_amount);
  
  }
  
  }
  
  目前Monopoly的功能比较简单。构造器创建一个Dollar类的实例$go_amount,设定为200实例go_amount常常被passtGo()函数调用,它带着一个player参数,并让对象player的函数collect为player机上200美元.
  
  Player类的声明请看下面代码,Monoplay类调用带一个Dollar参数的Player::collect()方法。然后把Dollar的数值加到Player的现金余额上。另外,通过判断Player::getBalance()方法函数返回来的余额,我们可以知道使访问当前Player和Monopoly对象实例是否在工作中。
  
  classPlayer{
  
  protected$name;
  
  protected$savings;
  
  /**
  
  *constructor
  
  *setnameandinitialbalance
  
  *@paramstring$nametheplayersname
  
  *@returnvoid
  
  */
  
  publicfunction__construct($name){
  
  $this->name=$name;
  
  $this->savings=newDollar(1500);
  
  }
  
  /**
  
  *receiveapayment
  
  *@paramDollar$amounttheamountreceived
  
  *@returnvoid
  
  */
  
  publicfunctioncollect($amount){
  
  $this->savings=$this->savings->add($amount);
  
  }
  
  *returnplayerbalance
  
  *@returnfloat
  
  */
  
  publicfunctiongetBalance(){
  
  return$this->savings->getAmount();
  
  }
  
  }
  
  上边已经给出了一个Monopoly和Player类,你现在可以根据目前声明的几个类定义进行一些测试了。
  
  MonopolyTestCase的一个测试实例可以像下面这样写:
  
  classMonopolyTestCaseextendsUnitTestCase{
  
  functionTestGame(){
  
  $game=newMonopoly;
  
  $player1=newPlayer(‘Jason’);
  
  $this->assertEqual(1500,$player1->getBalance());
  
  $game->passGo($player1);
  
  $this->assertEqual(1700,$player1->getBalance());
  
  $game->passGo($player1);
  
  $this->assertEqual(1900,$player1->getBalance());
  
  }
  
  }
  
  如果你运行MonopolyTestCase这个测试代码,代码的运行是没有问题的。现在可以添加一些新的功能。
  
  
    黑客防线网安服务器维护方案本篇连接:http://www.rongsen.com.cn/show-17381-1.html
网站维护教程更新时间:2012-09-21 05:17:51  【打印此页】  【关闭
我要申请本站N点 | 黑客防线官网 |  
专业服务器维护及网站维护手工安全搭建环境,网站安全加固服务。黑客防线网安服务器维护基地招商进行中!QQ:29769479

footer  footer  footer  footer