《PHP設(shè)計(jì)模式介紹》第二章 值對(duì)象模式(3)_PHP教程
推薦:《PHP設(shè)計(jì)模式介紹》第一章 編程慣用法學(xué)習(xí)一門(mén)新的語(yǔ)言意味著要采用新的慣用法。這章將介紹或者可能重新強(qiáng)調(diào)一些慣用法。你會(huì)發(fā)現(xiàn)這些慣用法在你要在代碼中實(shí)現(xiàn)設(shè)計(jì)模式時(shí)候是非常有用的。 在這里總結(jié)的許多編程慣用法都是很值得
詳細(xì)例子:
讓我們?cè)谝幌赂訌?fù)雜的例子中查看值對(duì)象模式的功能。
讓我們開(kāi)始實(shí)現(xiàn)一個(gè)的基于PHP5中Dollar類(lèi)中的一個(gè)Monopoly游戲。
第一個(gè)類(lèi)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的功能比較簡(jiǎn)單。構(gòu)造器創(chuàng)建一個(gè)Dollar類(lèi)的實(shí)例$go_amount,設(shè)定為200,實(shí)例go_amount常常被passtGo()函數(shù)調(diào)用,它帶著一個(gè)player參數(shù),并讓對(duì)象player的函數(shù)collect為player機(jī)上200美元.
Player類(lèi)的聲明請(qǐng)看下面代碼,Monoplay類(lèi)調(diào)用帶一個(gè)Dollar參數(shù)的Player::collect()方法。然后把Dollar的數(shù)值加到Player的現(xiàn)金余額上。另外,通過(guò)判斷Player::getBalance()方法函數(shù)返回來(lái)的余額,我們可以知道使訪問(wèn)當(dāng)前Player和Monopoly對(duì)象實(shí)例是否在工作中。
class Player { |
上邊已經(jīng)給出了一個(gè)Monopoly和Player類(lèi),你現(xiàn)在可以根據(jù)目前聲明的幾個(gè)類(lèi)定義進(jìn)行一些測(cè)試了。
MonopolyTestCase的一個(gè)測(cè)試實(shí)例可以像下面這樣寫(xiě):
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());
}
}
如果你運(yùn)行MonopolyTestCase這個(gè)測(cè)試代碼,代碼的運(yùn)行是沒(méi)有問(wèn)題的。現(xiàn)在可以添加一些新的功能。
分享:《PHP設(shè)計(jì)模式介紹》導(dǎo)言當(dāng)你在不斷的試圖從你的應(yīng)用程序中發(fā)現(xiàn)新的特征時(shí),你是否發(fā)現(xiàn)你提出的解決方法和一些以前你已經(jīng)實(shí)現(xiàn)的東西是如此的類(lèi)似呢?如果你是一個(gè)程序員(即使你才 開(kāi)始很短的時(shí)間),你都可能回答&ldqu
- PHPNOW安裝Memcached擴(kuò)展方法詳解
- php記錄頁(yè)面代碼執(zhí)行時(shí)間
- PHP中獎(jiǎng)概率的抽獎(jiǎng)算法程序代碼
- apache設(shè)置靜態(tài)文件緩存方法介紹
- php對(duì)圖像的各種處理函數(shù)代碼小結(jié)
- PHP 關(guān)于訪問(wèn)控制的和運(yùn)算符優(yōu)先級(jí)介紹
- 關(guān)于PHP語(yǔ)言構(gòu)造器介紹
- php/js獲取客戶(hù)端mac地址的實(shí)現(xiàn)代碼
- php5.5新數(shù)組函數(shù)array_column使用
- PHP preg_match的匹配多國(guó)語(yǔ)言的技巧
- php 中序列化和json使用介紹
- php采集文章中的圖片獲取替換到本地
PHP教程Rss訂閱編程教程搜索
PHP教程推薦
- php仿QQ驗(yàn)證碼的實(shí)例分析
- 解決FastCGI 進(jìn)程超過(guò)了配置的活動(dòng)超時(shí)時(shí)限的問(wèn)題
- 你或許尚未了解PHP的那10件事情
- 詳解PHP內(nèi)置訪問(wèn)資源的超時(shí)時(shí)間 time_out file_get_contents read_file
- 做了CDN獲取用戶(hù)真實(shí)IP的函數(shù)代碼(PHP與Asp設(shè)置方式)
- 解決PHP無(wú)法訪問(wèn)遠(yuǎn)程mysql的問(wèn)題
- 用什么軟件打開(kāi)php文件
- PHP技巧:PHP腳本中關(guān)于拼寫(xiě)檢查函數(shù)庫(kù)
- 解析PHP編寫(xiě)的25個(gè)游戲腳本
- PHP命名空間(Namespace)的使用詳解
- 相關(guān)鏈接:
- 教程說(shuō)明:
PHP教程-《PHP設(shè)計(jì)模式介紹》第二章 值對(duì)象模式(3)。