illustrer
1. Le modèle d'usine résout comment créer des objets d'instance sans utiliser new.
2. Il existe des moyens de créer des cibles autres que de nouvelles.
Si vous souhaitez modifier le type d'objet créé, il vous suffit de changer d'usine, et tout le code utilisant cette usine changera automatiquement.
3. Habituellement utilisée avec des interfaces, l'application n'a pas besoin de connaître les détails spécifiques de ces classes instanciées.
C'est facile à utiliser tant que vous savez que l'usine renvoie une classe qui prend en charge une certaine catégorie d'interface.
Exemple
/** * Résumé de l'interface d'une personne * Interface Personne */ interface Personne { fonction publique showInfo(); } /** * Une classe d'étudiant qui hérite de l'interface humaine abstraite */ classe Étudiant met en œuvre Personne { fonction publique showInfo() { echo "C'est un étudiantn"; } } /** * Une classe d'enseignant qui hérite de l'interface humaine abstraite */ classe Enseignant met en œuvre Personne { fonction publique showInfo() { echo "C'est un professeurn"; } } /** * Usine humaine * Classe PersonFactory */ classe PersonFactory { fabrique de fonctions statiques publiques ($person_type) { // Met en majuscule la première lettre du type passé dans $class_name = ucfirst($person_type); si(class_exists($class_name)){ renvoie le nouveau $class_name ; }autre{ throw new Exception("Classe : $class_name n'existe pas",1); } } } // Besoin d'un étudiant $student = PersonFactory::factory('student'); echo $étudiant->showInfo(); // Quand vous avez besoin d'un professeur $teacher = PersonFactory::factory('teacher'); echo $professeur->showInfo();
Ce qui précède est une introduction au mode usine PHP, j'espère que cela sera utile à tout le monde.