php設計模式介紹之值對象模式(3)_PHP教程
推薦:談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教程-php設計模式介紹之值對象模式(3)。