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

编辑Tag赚U币
教程Tag:暂无Tag,欢迎添加,赚取U币!

推荐:谈PHP程序开发中的中文编码问题
PHP程序设计中中文编码问题曾经困扰很多人,导致这个问题的原因其实很简单,每个国家(或区域)都规定了计算机信息交换用的字符编码集,如美国的扩展 ASCII 码, 中国的 GB2312-80,日本的 JIS 等。作为该国家/区域内信息处理的基础,字符编码集起着统一编码的

详细例子:

让我们在一下更加复杂的例子中查看值对象模式的功能。

让我们开始实现一个的基于PHP5中Dollar类中的一个Monopoly游戏。

第一个类Monopoly的框架如下:

class Monopoly {

protected $go_amount;

/**

* game constructor

* @return void

*/

public function __construct() {

$this->go_amount = new Dollar(200);

}

/**

* pay a player for passing 揋o?/span>

* @param Player $player the player to pay

* @return void

*/

public function passGo($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对象实例是否在工作中。

class Player {

protected $name;

protected $savings;

/**

* constructor

* set name and initial balance

* @param string $name the players name

* @return void

*/

public function __construct($name) {

$this->name = $name;

$this->savings = new Dollar(1500);

}

/**

* receive a payment

* @param Dollar $amount the amount received

* @return void

*/

public function collect($amount) {

$this->savings = $this->savings->add($amount);
}

* return player balance

* @return float

*/

public function getBalance() {

return $this->savings->getAmount();

}

}

上边已经给出了一个Monopoly和Player类,你现在可以根据目前声明的几个类定义进行一些测试了。

MonopolyTestCase的一个测试实例可以像下面这样写:

class MonopolyTestCase extends UnitTestCase {

function TestGame() {

$game = new Monopoly;

$player1 = new Player(‘Jason’);

$this->assertEqual(1500, $player1->getBalance());

$game->passGo($player1);

$this->assertEqual(1700, $player1->getBalance());

$game->passGo($player1);

$this->assertEqual(1900, $player1->getBalance());

}

}

如果你运行MonopolyTestCase这个测试代码,代码的运行是没有问题的。现在可以添加一些新的功能。

分享:浅谈正确理解PHP程序错误信息的表示含义
简述:我们编写程序时,无论怎样小心谨慎,犯错总是在所难免的。这些错误通常会迷惑PHP编译器。如果开发人员无法了解编译器报错信息的含义,那么这些错误信息不仅毫无用处,还会常常让人感到沮丧。 我们编写程序时,无论怎样小心谨慎,犯错总是在所难免的。

来源:模板无忧//所属分类:PHP教程/更新时间:2009-06-18
相关PHP教程