Nous ne sommes peut-être pas très familiers avec le modèle d'observateur. Il s'agit d'un système d'événements, ce qui signifie que ce modèle permet à une classe d'observer l'état d'une autre classe lorsque l'état de la classe observée change Quand , la classe d'observation peut. recevoir des notifications et prendre les actions correspondantes ; le modèle d'observateur fournit un autre moyen d'éviter un couplage étroit entre les composants, discutons donc de ce qu'est le modèle d'observateur dans cet article !
Recommandations associées : Que sont le modèle d'usine et le modèle de méthode d'usine en PHP ?
Observateur :
Il s'agit d'un système d'événements, ce qui signifie que ce modèle permet à une classe d'observer l'état d'une autre classe lorsque l'état de la changements de classe observés, la classe observatrice peut recevoir des notifications et prendre les actions correspondantes ; le modèle d'observateur fournit un autre moyen d'éviter un couplage étroit entre les composants
Nous utilisons toujours du code Par exemple, nous créons un nouveau fichier, puis définissons un classe, puis écrivons un attribut membre dans la classe, qui est un tableau pour stocker les observateurs, puis nous définissons une méthode, qui est utilisée pour stocker les observateurs et l'ajout d'un observateur permet à l'observateur d'être averti et de faire une certaine réponse lorsque le le comportement observé est effectué. Par exemple, le code est :
<?php class Man { //用来存放观察者 protected $observers = []; //添加观察者方法 function addObserver($observer) { $this->observers[]=$observer; } //花钱方法 function buy() { //当被观察者做出这个行为的时候,让观察者得到通并且做出一-定的反应 foreach ($this->observers as $girl) { $girl->pome(); } } } class GirlFriend { function pome() { echo'我只明白一件事,爱一个人,是那么痛苦<br />'; } } //创建对象 $xiaoming = new Man(); $xiaohua =new GirlFriend(); $xiaoli = new GirlFriend(); //添加观察者 $xiaoming->addObserver( $xiaohua); $xiaoming->addObserver($xiaoli); $xiaoming->buy();
Les résultats d'exécution sont les suivants :
S'il existe un moyen d'ajouter un observateur. , alors il existe un moyen de supprimer un observateur, nous devons donc également ajouter une méthode pour supprimer un observateur,
function delObserver($observer) { //查找对应值在数组中的键 $key = array_search($observer,$this->observers); //根据键删除值,并且数组重新索引 array_splice($this->observers, $key, 1); } }
//Delete
$xiaoming->delObserver( $xiaohua);
Le code est comme suit :
Apprentissage recommandé : "Tutoriel vidéo 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!