Der Factory-Modus ist der am häufigsten verwendete Instanziierungsobjektmodus. Es handelt sich um einen Modus, der Factory-Methoden verwendet, um neue Operationen zu ersetzen. Das Factory-Muster verfügt über ein Schlüsselkonstrukt, bei dem es sich um eine statische Methode mit dem Namen Factory handelt. Dies ist jedoch nur ein Prinzip. Obwohl die Factory-Methode beliebig benannt werden kann, kann diese statische Methode auch Parameter beliebiger Daten akzeptieren und zurückgeben ein Objekt.
Der Factory-Modus ist unser am häufigsten verwendeter Instanziierungsobjektmodus. Er wird häufig im berühmten Jive verwendet Forum Das Factory-Muster ist überall im Java-Programmsystem zu sehen.
Da das Factory-Muster zum Erstellen von Instanzobjekten äquivalent zu new ist, generieren wir häufig Instanzobjekte basierend auf der Klasse Class, z. B. A a=new A() Das Factory-Muster wird auch zum Erstellen von Instanzobjekten verwendet Wenn Sie neu sind, müssen Sie in Zukunft vorsichtig sein und überlegen, ob Sie die Verwendung des Werksmodus in Betracht ziehen können. Dies erfordert zwar möglicherweise mehr Arbeit, bringt aber eine größere Skalierbarkeit für Ihr System und erfordert so wenig Änderungen wie möglich.
Was ist ein Fabrikmuster? Fabrikmusterdefinition
Nehmen wir die Klasse Sample als Beispiel. Wenn wir ein Instanzobjekt von Sample erstellen möchten:
Sample sample=new Sample();
Die tatsächliche Situation ist jedoch, dass wir normalerweise erstellen müssen Führen Sie einige Initialisierungsarbeiten durch, z. B. das Zuweisen von Werten zum Abfragen der Datenbank usw.
Zuallererst denken wir daran, dass wir den Konstruktor von Sample verwenden können, sodass die generierte Instanz wie folgt geschrieben wird:
Sample sample=new Sample(参数);
Wenn jedoch die Initialisierungsarbeit beim Erstellen des durchgeführt wurde Beispielinstanz ist nicht so einfach wie Zuweisung Es kann ein langer Code sein. Wenn er auch in den Konstruktor geschrieben wird, sieht Ihr Code hässlich aus (Refactoring ist erforderlich).
Warum ist der Code hässlich? Unsere Analyse ist wie folgt: Wenn die Initialisierungsarbeit ein langer Teil des Codes ist, bedeutet dies, dass viel Arbeit zu erledigen ist Es ist sehr gefährlich, viel Arbeit in eine Methode zu stecken. Dies verstößt auch gegen die objektorientierten Prinzipien der objektorientierten Kapselung (Encapsulation) und des Versands (Delegation). "Zuweisungen von langem Code so weit wie möglich. in jedes Segment und „kapseln“ Sie dann jedes Segment (um die Kopplung und Verbindung zwischen Segmenten zu verringern). Auf diese Weise werden die Risiken verteilt. Wenn Sie es in Zukunft ändern müssen , Sie müssen nur jedes Segment ändern, und es treten keine störenden Vorfälle mehr auf.
In diesem Beispiel müssen wir zunächst die Arbeit zum Erstellen einer Instanz von der Arbeit zur Verwendung der Instanz trennen, d. h. den großen Aufwand an Initialisierungsarbeit, der zum Erstellen der Instanz erforderlich ist, vom Konstruktor trennen der Probe.
Zu diesem Zeitpunkt benötigen wir das Factory-Muster, um Objekte zu generieren, und wir können das einfache neue Sample (Parameter) oben nicht mehr verwenden. Wenn Sample eine Vererbung wie MySample hat, müssen wir gemäß der schnittstellenorientierten Programmierung Sample in eine Schnittstelle abstrahieren und zwei Unterklassen haben, MySample und HisSample folgt:
ISample mysample=new MySample(); ISample hissample=new HisSample();
Im Verlauf des Projekts kann es sein, dass Sample „viele Söhne zur Welt bringt“, also müssen wir diese Söhne einzeln instanziieren. Was noch schlimmer ist, wir müssen möglicherweise den vorherigen Code ändern: Söhne später hinzufügen . Beispiel: Dies ist in herkömmlichen Programmen unvermeidlich.
Aber wenn Sie das Fabrikmuster von Anfang an bewusst verwenden, werden diese Probleme verschwinden.
Das obige ist der detaillierte Inhalt vonWas ist ein Fabrikmuster?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!