委任モード
委任設計パターンは、コア オブジェクトを他のオブジェクトに割り当てたり委任したりすることで、コア オブジェクトから恣意性や複雑な機能を削除します。
応用シナリオ
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();
$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
true
http://www.bkjia.com/PHPjc/478145.html
技術記事
委任パターン 他のオブジェクトに割り当てまたは委任することにより、委任設計パターンでは、コア オブジェクトの意思決定と複雑な機能を削除できます。 アプリケーションシナリオ MP3 再生を備えた CD クラスを設計しました...