veranschaulichen
1. Das Factory-Muster löst, wie Instanzobjekte erstellt werden, ohne new zu verwenden.
2. Es gibt einige andere Möglichkeiten, Ziele als neue zu erstellen.
Wenn Sie den Typ des erstellten Objekts ändern möchten, müssen Sie nur die Factory ändern. Der gesamte Code, der diese Factory verwendet, wird automatisch geändert.
3. Wird normalerweise mit Schnittstellen verwendet, muss die Anwendung die spezifischen Details dieser instanziierten Klassen nicht kennen.
Die Verwendung ist einfach, solange Sie wissen, dass die Factory eine Klasse zurückgibt, die eine bestimmte Schnittstellenkategorie unterstützt.
Beispiel
/** * Abstrakt die Schnittstelle einer Person. * Schnittstelle Person */ Schnittstelle Person { öffentliche Funktion showInfo(); } /** * Eine Studentenklasse, die von der abstrakten menschlichen Schnittstelle * Klasse Student erbt */ Klasse Student implementiert Person { öffentliche Funktion showInfo() { echo „Das ist ein Studentn“; } } /** * Eine Lehrerklasse, die von der abstrakten menschlichen Schnittstelle * Klassenlehrer erbt */ Klassenlehrer setzt Person um { öffentliche Funktion showInfo() { echo „Das ist ein Lehrern“; } } /** * Menschliche Fabrik * Klasse PersonFabrik */ Klasse PersonFactory { öffentliche statische Funktionsfabrik ($person_type) { // Den ersten Buchstaben des in $class_name übergebenen Typs groß schreiben = ucfirst($person_type); if(class_exists($class_name)){ neuen $class_name zurückgeben; }anders{ throw new Exception("Klasse: $class_name existiert nicht",1); } } } // Brauche einen Studenten $student = PersonFactory::factory('student'); echo $student->showInfo(); // Wenn Sie einen Lehrer brauchen $teacher = PersonFactory::factory('teacher'); echo $teacher->showInfo();
Das Obige ist eine Einführung in den PHP-Factory-Modus. Ich hoffe, dass es für alle hilfreich ist.