Heim >Backend-Entwicklung >PHP-Tutorial >Detaillierte Erklärung und Fälle des PHP-Delegierungsmodus

Detaillierte Erklärung und Fälle des PHP-Delegierungsmodus

墨辰丷
墨辰丷Original
2018-05-16 14:07:121177Durchsuche

In diesem Artikel werden hauptsächlich die detaillierten Erklärungen und Fälle des PHP-Delegierungsmodells vorgestellt. Ich hoffe, dass er für alle hilfreich ist.

Delegierungsmuster

Durch das Zuweisen oder Delegieren an andere Objekte entfernt das Delegate-Entwurfsmuster Entscheidungsfindung und komplexe Funktionalität von Kernobjekten.

Anwendungsszenarien

1. Entwarf eine CD-Klasse, die über einen MP3-Wiedergabemodus und einen MP4-Wiedergabemodus verfügt

2. Vor der Verbesserung wurde der Wiedergabemodus der CD-Klasse verwendet , Sie müssen bestimmen, welcher Wiedergabemodus in der instanziierten Klasse ausgewählt werden soll

3 Nach der Verbesserung wird der Wiedergabemodus als Parameter an die PlayList-Funktion übergeben und die entsprechende abzuspielende Methode kann automatisch gefunden werden.

Code: CD-Klasse, vor der Verbesserung war die Auswahl des Wiedergabemodus mühsam

<?php  
//委托模式-去除核心对象中的判决和复杂的功能性  
//使用委托模式之前,调用cd类,选择cd播放模式是复杂的选择过程  
class cd {  
    protected $cdInfo = array();   
      
    public function addSong($song) {  
        $this->cdInfo[$song] = $song;  
    }  
      
    public function playMp3($song) {  
        return $this->cdInfo[$song] . &#39;.mp3&#39;;  
    }  
      
    public function playMp4($song) {  
        return $this->cdInfo[$song] . &#39;.mp4&#39;;  
    }  
}  
$oldCd = new cd;  
$oldCd->addSong("1");  
$oldCd->addSong("2");  
$oldCd->addSong("3");  
$type = &#39;mp3&#39;;  
if ($type == &#39;mp3&#39;) {  
    $oldCd->playMp3();  
} else {  
    $oldCd->playMp4();  
}

Code: verbesserte CD-Klasse durch Delegationsmodus

<?php  
//委托模式-去除核心对象中的判决和复杂的功能性  
//改进cd类  
class cdDelegate {  
    protected $cdInfo = array();   
      
    public function addSong($song) {  
        $this->cdInfo[$song] = $song;  
    }  
      
    public function play($type, $song) {  
        $obj = new $type;  
        return $obj->playList($this->cdInfo, $song);  
    }  
}  
  
class mp3 {  
    public function playList($list) {  
        return $list[$song];  
    }  
}  
  
class mp4 {  
    public function playList($list) {  
        return $list[$song];  
    }  
}  
  
$newCd = new cd;  
$newCd->addSong("1");  
$newCd->addSong("2");  
$newCd->addSong("3");  
$type = &#39;mp3&#39;;  
$oldCd->play(&#39;mp3&#39;, &#39;1&#39;); //只要传递参数就能知道需要选择何种播放模式

Verwandte Empfehlung:

Beispiel-Tutorial für Delegationsmuster in PHP

Erweitertes objektorientiertes Entwurfsmuster von PHP: Beispiele für die Verwendung von Delegationsmustern

Delegierungsmuster von PHP Designmuster

Das obige ist der detaillierte Inhalt vonDetaillierte Erklärung und Fälle des PHP-Delegierungsmodus. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn