日韩天天综合网_野战两个奶头被亲到高潮_亚洲日韩欧美精品综合_av女人天堂污污污_视频一区**字幕无弹窗_国产亚洲欧美小视频_国内性爱精品在线免费视频_国产一级电影在线播放_日韩欧美内地福利_亚洲一二三不卡片区

《PHP設(shè)計模式介紹》第二章 值對象模式(3)_PHP教程

編輯Tag賺U幣
教程Tag:暫無Tag,歡迎添加,賺取U幣!

推薦:《PHP設(shè)計模式介紹》第一章 編程慣用法
學(xué)習一門新的語言意味著要采用新的慣用法。這章將介紹或者可能重新強調(diào)一些慣用法。你會發(fā)現(xiàn)這些慣用法在你要在代碼中實現(xiàn)設(shè)計模式時候是非常有用的。 在這里總結(jié)的許多編程慣用法都是很值得

詳細例子

讓我們在一下更加復(fù)雜的例子中查看值對象模式的功能。

讓我們開始實現(xiàn)一個的基于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的功能比較簡單。構(gòu)造器創(chuàng)建一個Dollar類的實例$go_amount,設(shè)定為200,實例go_amount常常被passtGo()函數(shù)調(diào)用,它帶著一個player參數(shù),并讓對象player的函數(shù)collect為player機上200美元.

Player類的聲明請看下面代碼,Monoplay類調(diào)用帶一個Dollar參數(shù)的Player::collect()方法。然后把Dollar的數(shù)值加到Player的現(xiàn)金余額上。另外,通過判斷Player::getBalance()方法函數(shù)返回來的余額,我們可以知道使訪問當前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();
}
}

上邊已經(jīng)給出了一個Monopoly和Player類,你現(xiàn)在可以根據(jù)目前聲明的幾個類定義進行一些測試了。

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這個測試代碼,代碼的運行是沒有問題的。現(xiàn)在可以添加一些新的功能。

分享:《PHP設(shè)計模式介紹》導(dǎo)言
當你在不斷的試圖從你的應(yīng)用程序中發(fā)現(xiàn)新的特征時,你是否發(fā)現(xiàn)你提出的解決方法和一些以前你已經(jīng)實現(xiàn)的東西是如此的類似呢?如果你是一個程序員(即使你才 開始很短的時間),你都可能回答&ldqu

來源:模板無憂//所屬分類:PHP教程/更新時間:2008-08-22
相關(guān)PHP教程