Maison > développement back-end > tutoriel php > Explication détaillée et cas du mode délégation PHP

Explication détaillée et cas du mode délégation PHP

墨辰丷
Libérer: 2023-03-25 22:26:02
original
1175 Les gens l'ont consulté

Cet article présente principalement l'explication détaillée et les cas du modèle de délégation PHP. Les amis intéressés peuvent s'y référer. J'espère qu'il sera utile à tout le monde.

Modèle de délégation

En attribuant ou en déléguant à d'autres objets, le modèle de conception Delegate supprime la prise de décision et les fonctionnalités complexes des objets principaux.

Scénarios d'application

1. Conception d'une classe de CD, qui dispose d'un mode de lecture mp3 et d'un mode de lecture mp4

2. Avant l'amélioration, le mode de lecture de la classe CD était utilisé. , vous devez déterminer quel mode de lecture choisir dans la classe instanciée

3. Après amélioration, le mode de lecture est passé dans la fonction playList en tant que paramètre, et la méthode correspondante à jouer peut être automatiquement trouvée.

Code : classe de cd, avant amélioration, la sélection du mode de lecture était pénible

<?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();  
}
Copier après la connexion

Code : classe de cd améliorée grâce au mode délégation

<?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;); //只要传递参数就能知道需要选择何种播放模式
Copier après la connexion

Recommandations associées :

Tutoriel d'exemple de modèle de délégation en php

Modèle de conception avancé orienté objet PHP : exemples d'utilisation de modèle de délégation

Mode de délégation du modèle de conception PHP

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal