ホームページ  >  記事  >  バックエンド開発  >  PHP デザイン パターン シリーズ - 委任パターン_PHP チュートリアル

PHP デザイン パターン シリーズ - 委任パターン_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 17:52:11735ブラウズ

委任モード
委任設計パターンは、コア オブジェクトを他のオブジェクトに割り当てたり委任したりすることで、コア オブジェクトから恣意性や複雑な機能を削除します。
応用シナリオ
mp3再生モードとmp4再生モードを持つcdクラスを設計しました
改善前は、cd クラスの再生モードを使用する場合、インスタンス化されたクラスでどの再生モードを選択するかを決定する必要がありました
改善後は、再生モードがパラメータとしてplayList関数に渡され、対応する再生方法が自動的に見つかるようになりました。
コード: cd クラス 改善前は再生モードを選択するのが面倒でした
[php]
//委任パターン - コアオブジェクトから意思決定と複雑な機能を削除します
//委任モードを使用する前に、cd クラスを呼び出して cd 再生モードを選択するのは複雑な選択プロセスです
クラス CD {
保護された $cdInfo = array();
パブリック関数 addSong($song) {
$this->cdInfo[$song] = $song; }

パブリック関数 playMp3($song) {
$this->cdInfo[$song] を返します
}

パブリック関数 playMp4($song) {
$this->cdInfo[$song] を返します
}
}
$oldCd = 新しい CD
$oldCd->addSong("1"); $oldCd->addSong("2"); $oldCd->addSong("3"); $type = 'mp3'; if ($type == 'mp3') {
$oldCd->playMp3(); } その他 {
$oldCd->playMp4(); }

コード: 委任モードによる cd クラスの改善
[php] plaincopyprint を表示しますか?
//委任パターン - コアオブジェクトから意思決定と複雑な機能を削除します
// CD クラスを改善します
クラス cdDelegate {
保護された $cdInfo = array();

パブリック関数 addSong($song) {

$this->cdInfo[$song] = $song; }

パブリック関数 play($type, $song) {
$obj = 新しい $type
return $obj->playList($this->cdInfo, $song); }
}

クラス mp3 {
パブリック関数 playList($list) {
$list[$song] を返す
}
}

クラス mp4 {
パブリック関数 playList($list) {
$list[$song] を返す
}
}

$newCd = 新しい CD
$newCd->addSong("1"); $newCd->addSong("2"); $newCd->addSong("3"); $type = 'mp3'; $oldCd->play('mp3', '1'); //パラメータを渡す限り、どの再生モードを選択する必要があるかがわかります

作者: initphp




http://www.bkjia.com/PHPjc/478145.html

www.bkjia.com

tru​​e

http://www.bkjia.com/PHPjc/478145.html

技術記事

委任パターン 他のオブジェクトに割り当てまたは委任することにより、委任設計パターンでは、コア オブジェクトの意思決定と複雑な機能を削除できます。 アプリケーションシナリオ MP3 再生を備えた CD クラスを設計しました...

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。