Maison >développement back-end >Problème PHP >Comment implémenter le modèle d'observateur en php
Comment implémenter le modèle d'observateur en PHP : créez d'abord un fichier exemple PHP ; puis enregistrez l'observateur avec le thème ; enfin, parcourez l'arborescence d'enregistrement et laissez chaque objet implémenter les opérations fournies par son interface.
L'environnement d'exploitation de cet article : système Windows 7, PHP version 7.1, ordinateur DELL G3
PHP implémente le mode observateur
Le mot observateur en "mode observateur" est très instructif. Les enfants qui ont joué à de nombreux jeux en ligne doivent savoir que même à Doudizhu, en plus des joueurs, il y a aussi un personnage appelé "Observateur". Dans le modèle de conception dont nous parlons aujourd’hui, il en va de même pour les observateurs. Premièrement, il doit y avoir un « thème ». Ce n'est qu'avec un thème que les observateurs peuvent se rassembler autour de petits tabourets. Deuxièmement, l'observateur doit également avoir ses propres opérations. Sinon, cela ne sert à rien de se rassembler et de ne rien faire.
D'un point de vue orienté processus, l'observateur s'enregistre d'abord auprès du sujet. Après l'enregistrement, le sujet informe l'observateur d'effectuer les opérations correspondantes, et le tout est terminé.
D'un point de vue orienté objet, les sujets fournissent des interfaces pour l'enregistrement et la notification, et les observateurs fournissent des interfaces pour leurs propres opérations. (Ces observateurs ont la même interface.) Les observateurs utilisent l'interface du sujet pour s'inscrire au sujet, et le sujet utilise l'interface de l'observateur pour notifier les observateurs. Le degré de couplage est assez faible.
Comment mettre en œuvre l'enregistrement des observateurs ? Le modèle de déclarant précédent peut facilement nous fournir des idées, il suffit d'ajouter ces objets à un arbre d'enregistrement. Comment notifier ? C'est encore plus simple. Parcourez l'arborescence d'enregistrement et laissez chaque objet implémenter les opérations fournies par son interface
<?php // 主题接口 interface Subject{ public function register(Observer $observer); public function notify(); } // 观察者接口 interface Observer{ public function watch(); } // 主题 class Action implements Subject{ public $_observers=array(); public function register(Observer $observer){ $this->_observers[]=$observer; } public function notify(){ foreach ($this->_observers as $observer) { $observer->watch(); } } } // 观察者 class Cat implements Observer{ public function watch(){ echo "Cat watches TV<hr/>"; } } class Dog implements Observer{ public function watch(){ echo "Dog watches TV<hr/>"; } } class People implements Observer{ public function watch(){ echo "People watches TV<hr/>"; } } // 应用实例 $action=new Action(); $action->register(new Cat()); $action->register(new People()); $action->register(new Dog()); $action->notify();
[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!