Heim  >  Artikel  >  Backend-Entwicklung  >  Was ist ein PHP-Factory-Muster? Warum den PHP-Factory-Modus verwenden?

Was ist ein PHP-Factory-Muster? Warum den PHP-Factory-Modus verwenden?

黄舟
黄舟Original
2017-11-13 14:04:575529Durchsuche

Ich glaube, viele Freunde haben die gleiche Frage, wenn sie den Titel sehen. Es gibt viele Modi in PHP. Heute müssen wir Ihnen einen der PHP-Factory-Modi vorstellen Modus, warum den PHP-Factory-Modus verwenden?

 Was ist also der Werksmodus?

Dem Namen nach zu urteilen, scheint es keine Ahnung zu geben. Fabrikmodus, bezogen auf die Produktion? Oder hängt es mit dem Produktionsprozess zusammen? Könnte es etwas mit den Fabrikleitern zu tun haben? Hängt es mit dem Führungssekretär zusammen? Sekretärin... Okay, lassen Sie uns nicht zu nahe kommen. Das sogenannte Fabrikmodell hat wirklich etwas mit der Produktion zu tun. Was soll produziert werden? Was erzeugt wird, ist ein Instanzobjekt. Mit welcher Ausrüstung wird es hergestellt? Hergestellt durch eine Fabrikklasse. Wie wird es hergestellt? Die Factory-Klasse ruft ihre eigene statische Methode auf, um Objektinstanzen zu erzeugen.

Das Factory-Muster hat ein Schlüsselkonstrukt, das nach allgemeinen Prinzipien eine statische Methode mit dem Namen Factory ist. Dies ist jedoch nur ein Prinzip, obwohl die Factory-Methode benannt werden kann willkürlich ist diese statische Methode in Ordnung. Sie akzeptiert beliebige Datenparameter und muss ein Objekt zurückgeben.

 Warum den Werksmodus verwenden?

Viele Menschen, die noch nie mit dem Factory-Muster in Berührung gekommen sind, kommen nicht umhin zu fragen, warum ich so viel Mühe aufwenden muss, um eine Factory-Klasse zu erstellen, um Objekte zu erstellen? Anstatt Dinge wie einfache Wartung und Skalierbarkeit anzuwenden, können wir ein so einfaches Problem betrachten. Im Projekt erstellen wir Objekte über eine Klasse. Wenn es fast abgeschlossen ist oder abgeschlossen ist und die Funktion erweitert werden muss, wird festgestellt, dass der ursprüngliche Klassenname nicht sehr geeignet ist oder dass die Klasse einen Konstruktor Funktionsparameter hinzufügen muss, um eine Funktionserweiterung zu erreichen . Heilige Scheiße! Ich habe über diese Klasse viele Objektinstanzen erstellt. Muss ich sie trotzdem einzeln ändern? Erst jetzt spüren wir die Breite und Tiefe von „hoher Kohäsion und geringer Kopplung“. Kein Problem, Factory-Methoden können dieses Problem lösen.

Denken Sie noch einmal darüber nach, ich möchte eine Verbindung zur Datenbank herstellen. Es gibt verschiedene Methoden in PHP, MySQL-Erweiterung, MySQLi-Erweiterung, PDO-Erweiterung. Ich möchte nur ein Objekt für zukünftige Operationen. Welches ich möchte, hängt von der Situation ab. Da Sie alle eine Verbindung zur Datenbank herstellen, sollten Sie über die gleichen Funktionen verfügen: Verbindungen herstellen, abfragen, trennen ... (die Bedeutung von Schnittstellen wird hier gezeigt). Alles in allem müssten diese Methoden „vereint und mit der Außenwelt verbunden“ sein. Wie erreicht man das? Verwenden Sie das Fabrikmuster.

 Wie implementiert man das Factory-Muster?

Im Vergleich zum Singleton-Modus haben wir oben genügend Informationen, die Factory-Klasse und die statischen Methoden in der Factory-Klasse bereitgestellt. Neu ist lediglich die Objektinstanz, die in der statischen Methode erstellt werden muss. Was die zweite Frage oben betrifft, können wir natürlich einfach ein Urteil basierend auf den Parametern der statischen Methode der Factory-Klasse fällen. Unabhängig davon, ob Sie if..else.. oder switch..case.. verwenden, wäre es schön, die Arbeit zur Bestimmung der zu erstellenden Klasse schnell und effizient abschließen zu können. Denken Sie abschließend daran, dass statische Methoden der Factory-Klasse ein Objekt zurückgeben. Nicht zwei, geschweige denn drei.

 Grundlegende Fabrikklasse:

//要创建对象实例的类class MyObject{
} //工厂类class MyFactory{public static function factory(){return new MyObject():
   }
} 
$instance=MyFactory::factory();

Ein etwas komplexeres Fabrikmuster:

<?php
interface Transport{    
public function go();
}class Bus implements Transport{    
public function go(){        
echo "bus每一站都要停";
    }
}class Car implements Transport{    
public function go(){        
echo "car跑的飞快";
    }
}class Bike implements Transport{    
public function go(){        
echo "bike比较慢";
    }
}class transFactory{    
public static function factory($transport)
    {        
        switch ($transport) {            
        case &#39;bus&#39;:                
        return new Bus();                
        break;            
        case &#39;car&#39;:                
        return new Car();                
        break;            
        case &#39;bike&#39;:                
        return new Bike();                
        break;
        }
    }
}$transport=transFactory::factory(&#39;car&#39;);$transport->go();

Wenn die statische Fabrikmethode „factory()“ sein soll, benennen Sie die Fabrikklasse nicht törichterweise „Fabrik“. Warum? Vergessen Sie nicht den Konstruktor mit demselben Namen~

Lassen Sie uns zum Schluss über einige Gefühle sprechen. Viele Anfänger sind ehrgeiziger als andere. Sie haben gerade gelernt, ob..sonst.. , Sitzung und Cookie Lassen Sie uns etwas eleganter werden. Wenn man mit Leuten spricht, reden sie oft über Skalierbarkeit, Wartbarkeit usw. Was die Beispiele betrifft, werden Sie für eine Weile sprachlos sein. Manchmal habe ich das Gefühl, dass ich, egal ob ich Code schreibe oder mit anderen lerne, immer in der Phase bin, in der ich „nach anderen in der Menge suche“, und plötzlich merke ich: „Diese Person ist im Dunkeln.“ Licht“ und rufen aus: „Es stellt sich heraus, dass diese Person …“ Es ist einfach nur Scheiße.“

Zusammenfassung:

Nachdem ich diesen Artikel gelesen habe, glaube ich, dass jeder ein allgemeines Verständnis des PHP-Factory-Modells hat für deine Arbeit Hilft!

Verwandte Empfehlungen:

Detaillierte Erläuterung der drei Formen des Beispielcodes des PHP-Factory-Musters

Zusammenfassung der Verwendungsbeispiele des PHP-Factory-Musters

PHP-Fabrikmuster PHP-Designmuster-Iteratormuster

Das obige ist der detaillierte Inhalt vonWas ist ein PHP-Factory-Muster? Warum den PHP-Factory-Modus verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn