


Lassen Sie uns über das abstrakte Factory-Muster in PHP sprechen
In diesem Artikel lernen Sie das abstrakte Fabrikmuster in PHP-Entwurfsmustern kennen. Es hat einen gewissen Referenzwert. Freunde in Not können sich darauf beziehen. Ich hoffe, es wird für alle hilfreich sein.
Das Highlight der Factory Pattern-Serie ist da, ja, das ist das gemunkelte Abstract Factory Pattern. Wie haben Sie sich gefühlt, als Sie den Namen zum ersten Mal gehört haben? Jedenfalls finde ich, dass dieses Ding sehr hochwertig sein sollte, schließlich enthält es das Wort „abstrakt“. Es wird gesagt, dass diese beiden Wörter in der Entwicklung wirklich ein hohes Entwicklungsniveau haben. Wenn sie zusammen mit dem Wort „abstrakt“ verwendet werden, scheint alles sehr mächtig zu sein. Allerdings kann man Abstract Factory tatsächlich als den großen Bruder des Fabrikmusters bezeichnen.
Gof-Klassendiagramm und Erklärung
Solange Sie das Factory-Methodenmuster verstehen, ist es tatsächlich einfach, das abstrakte Factory-Muster zu verstehen. Wie sagt man es? Es ist immer noch die gleiche Verzögerung für Unterklassen und es ist immer noch die gleiche Rückgabe des angegebenen Objekts. Es ist nur so, dass die abstrakte Fabrik nicht nur ein Objekt zurückgibt, sondern eine Reihe davon.
GoF-Definition: Bietet eine Schnittstelle zum Erstellen einer Reihe verwandter oder voneinander abhängiger Objekte, ohne deren spezifische Klassen anzugeben.
GoF-Klassendiagramm:
- Auf der linken Seite befinden sich zwei Fabriken 1 und 2, die beide eine abstrakte Fabrik erben und die Methoden CreateProductA und CreateProductB implementieren
- Fabrik 1 produziert ProduktA1 und ProduktB1
- Ebenso Fabrik 2 produziert ProduktA2 und ProduktB2
// 商品A抽象接口 interface AbstractProductA { public function show(): void; } // 商品A1实现 class ProductA1 implements AbstractProductA { public function show(): void { echo 'ProductA1 is Show!' . PHP_EOL; } } // 商品A2实现 class ProductA2 implements AbstractProductA { public function show(): void { echo 'ProductA2 is Show!' . PHP_EOL; } } // 商品B抽象接口 interface AbstractProductB { public function show(): void; } // 商品B1实现 class ProductB1 implements AbstractProductB { public function show(): void { echo 'ProductB1 is Show!' . PHP_EOL; } } // 商品B2实现 class ProductB2 implements AbstractProductB { public function show(): void { echo 'ProductB2 is Show!' . PHP_EOL; } }
Produktimplementierung. Diesmal gibt es tatsächlich vier Produkte, nämlich A1, A2, B1 und B2 Beziehung zwischen A1 und B1 sind ähnliche verwandte Produkte, B1 und B2 sind ähnliche verwandte Produkte// 抽象工厂接口
interface AbstractFactory
{
// 创建商品A
public function CreateProductA(): AbstractProductA;
// 创建商品B
public function CreateProductB(): AbstractProductB;
}
// 工厂1,实现商品A1和商品B1
class ConcreteFactory1 implements AbstractFactory
{
public function CreateProductA(): AbstractProductA
{
return new ProductA1();
}
public function CreateProductB(): AbstractProductB
{
return new ProductB1();
}
}
// 工厂2,实现商品A2和商品B2
class ConcreteFactory2 implements AbstractFactory
{
public function CreateProductA(): AbstractProductA
{
return new ProductA2();
}
public function CreateProductB(): AbstractProductB
{
return new ProductB2();
}
}
Vollständiger Code: Abstraktes Fabrikmuster
https://github.com/zhangyue0503/designpatterns-php/blob/master/03.abstract-factory/source/abstract-factory.phpBeispiel
Ist dir immer noch etwas schwindelig, nachdem du das gesehen hast? Um es einfach auszudrücken: Es geht eigentlich nur darum, verschiedene Objekte über verschiedene Methoden in einer Factory-Klasse zurückzugeben. Lassen Sie uns das noch einmal am Beispiel des SMS-Versands erklären! Szenario: Diesmal haben wir eine geschäftliche Notwendigkeit, nicht nur Textnachrichten zu versenden, sondern gleichzeitig auch eine Push-Nachricht zu versenden. Der Zweck von Textnachrichten besteht darin, Benutzer über neue Aktivitäten zu informieren, an denen sie teilnehmen können, während Push-Benachrichtigungen Benutzer nicht nur über neue Aktivitäten informieren, sondern sie können auch direkt darauf klicken, um rote Umschläge zu erhalten. Ist das nicht aufregend? Glücklicherweise verfügen die von uns zuvor ausgewählten Cloud-Dienstanbieter alle über SMS- und Push-Schnittstellen, daher werden wir zur Implementierung nur die abstrakte Fabrik verwenden!
SMS-Versandklassendiagramm<?php interface Message { public function send(string $msg); } class AliYunMessage implements Message{ public function send(string $msg){ // 调用接口,发送短信 // xxxxx return '阿里云短信(原阿里大鱼)发送成功!短信内容:' . $msg; } } class BaiduYunMessage implements Message{ public function send(string $msg){ // 调用接口,发送短信 // xxxxx return '百度SMS短信发送成功!短信内容:' . $msg; } } class JiguangMessage implements Message{ public function send(string $msg){ // 调用接口,发送短信 // xxxxx return '极光短信发送成功!短信内容:' . $msg; } } interface Push { public function send(string $msg); } class AliYunPush implements Push{ public function send(string $msg){ // 调用接口,发送客户端推送 // xxxxx return '阿里云Android&iOS推送发送成功!推送内容:' . $msg; } } class BaiduYunPush implements Push{ public function send(string $msg){ // 调用接口,发送客户端推送 // xxxxx return '百度Android&iOS云推送发送成功!推送内容:' . $msg; } } class JiguangPush implements Push{ public function send(string $msg){ // 调用接口,发送客户端推送 // xxxxx return '极光推送发送成功!推送内容:' . $msg; } } interface MessageFactory{ public function createMessage(); public function createPush(); } class AliYunFactory implements MessageFactory{ public function createMessage(){ return new AliYunMessage(); } public function createPush(){ return new AliYunPush(); } } class BaiduYunFactory implements MessageFactory{ public function createMessage(){ return new BaiduYunMessage(); } public function createPush(){ return new BaiduYunPush(); } } class JiguangFactory implements MessageFactory{ public function createMessage(){ return new JiguangMessage(); } public function createPush(){ return new JiguangPush(); } } // 当前业务需要使用阿里云 $factory = new AliYunFactory(); // $factory = new BaiduYunFactory(); // $factory = new JiguangFactory(); $message = $factory->createMessage(); $push = $factory->createPush(); echo $message->send('您已经很久没有登录过系统了,记得回来哦!'); echo $push->send('您有新的红包已到帐,请查收!');
Vollständiger Quellcode: SMS-Versandfabrikmethode
Beschreibung
Ist es sehr klar?
Richtig, wir haben zwei Produkte, eines ist Message und das andere ist Push, die zum Senden von Nachrichten bzw. zum Senden von Push-Nachrichten dienen.- Die abstrakte Fabrik erfordert lediglich, dass unsere Schnittstellenimplementierer zwei Methoden implementieren und zum Senden von Textnachrichten zurückkehren und das Versenden von Push-Nachrichten.
- Du hast gesagt, ich möchte nur Textnachrichten und keine Push-Benachrichtigungen senden, ist das in Ordnung? Natürlich können Sie das tun, rufen Sie einfach nicht die Methode createPush() auf.
- Für welches Szenario eignet sich die abstrakte Fabrik am besten? Offensichtlich die Erstellung einer Reihe verwandter Objekte
- Das Fabrikmethodenmuster ist der Kern der abstrakten Fabrik. Dies entspricht der Einführung mehrerer Fabrikmethoden in eine große Fabrik, um stattdessen einen vollständigen Satz von Produkten (einschließlich Peripheriegeräten) herzustellen ein einzelnes Produkt
- Empfohlenes Lernen: „
- PHP-Video-Tutorial “
Das obige ist der detaillierte Inhalt vonLassen Sie uns über das abstrakte Factory-Muster in PHP sprechen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen











PHP ist hauptsächlich prozedurale Programmierung, unterstützt aber auch die objektorientierte Programmierung (OOP). Python unterstützt eine Vielzahl von Paradigmen, einschließlich OOP, funktionaler und prozeduraler Programmierung. PHP ist für die Webentwicklung geeignet, und Python eignet sich für eine Vielzahl von Anwendungen wie Datenanalyse und maschinelles Lernen.

PHP und Python haben ihre eigenen Vor- und Nachteile, und die Wahl hängt von den Projektbedürfnissen und persönlichen Vorlieben ab. 1.PHP eignet sich für eine schnelle Entwicklung und Wartung großer Webanwendungen. 2. Python dominiert das Gebiet der Datenwissenschaft und des maschinellen Lernens.

PHP verwendet MySQLI- und PDO-Erweiterungen, um in Datenbankvorgängen und serverseitiger Logikverarbeitung zu interagieren und die serverseitige Logik durch Funktionen wie Sitzungsverwaltung zu verarbeiten. 1) Verwenden Sie MySQLI oder PDO, um eine Verbindung zur Datenbank herzustellen und SQL -Abfragen auszuführen. 2) Behandeln Sie HTTP -Anforderungen und Benutzerstatus über Sitzungsverwaltung und andere Funktionen. 3) Verwenden Sie Transaktionen, um die Atomizität von Datenbankvorgängen sicherzustellen. 4) Verhindern Sie die SQL -Injektion, verwenden Sie Ausnahmebehandlung und Schließen von Verbindungen zum Debuggen. 5) Optimieren Sie die Leistung durch Indexierung und Cache, schreiben Sie hochlesbarer Code und führen Sie die Fehlerbehandlung durch.

PHP wird verwendet, um dynamische Websites zu erstellen. Zu den Kernfunktionen gehören: 1. Dynamische Inhalte generieren und Webseiten in Echtzeit generieren, indem Sie eine Verbindung mit der Datenbank herstellen; 2. Verarbeiten Sie Benutzerinteraktions- und Formulareinreichungen, überprüfen Sie Eingaben und reagieren Sie auf Operationen. 3. Verwalten Sie Sitzungen und Benutzerauthentifizierung, um eine personalisierte Erfahrung zu bieten. 4. Optimieren Sie die Leistung und befolgen Sie die Best Practices, um die Effizienz und Sicherheit der Website zu verbessern.

PHP eignet sich für Webentwicklung und schnelles Prototyping, und Python eignet sich für Datenwissenschaft und maschinelles Lernen. 1.PHP wird für die dynamische Webentwicklung verwendet, mit einfacher Syntax und für schnelle Entwicklung geeignet. 2. Python hat eine kurze Syntax, ist für mehrere Felder geeignet und ein starkes Bibliotheksökosystem.

PHP entstand 1994 und wurde von Rasmuslerdorf entwickelt. Es wurde ursprünglich verwendet, um Website-Besucher zu verfolgen und sich nach und nach zu einer serverseitigen Skriptsprache entwickelt und in der Webentwicklung häufig verwendet. Python wurde Ende der 1980er Jahre von Guidovan Rossum entwickelt und erstmals 1991 veröffentlicht. Es betont die Lesbarkeit und Einfachheit der Code und ist für wissenschaftliche Computer, Datenanalysen und andere Bereiche geeignet.

Zu den Kernvorteilen von PHP gehören einfacher Lernen, starke Unterstützung für Webentwicklung, reiche Bibliotheken und Rahmenbedingungen, hohe Leistung und Skalierbarkeit, plattformübergreifende Kompatibilität und Kosteneffizienz. 1) leicht zu erlernen und zu bedienen, geeignet für Anfänger; 2) gute Integration in Webserver und unterstützt mehrere Datenbanken. 3) leistungsstarke Frameworks wie Laravel; 4) hohe Leistung kann durch Optimierung erzielt werden; 5) mehrere Betriebssysteme unterstützen; 6) Open Source, um die Entwicklungskosten zu senken.

PhPhas significantantyPactedWebDevelopmentAndendendsbeyondit.1) iTpowersMAjorPlatforms-LikewordpressandExcelsInDatabaseInteractions.2) php'SadaptabilityAllowStoscaleForLargeApplicationsfraMe-Linien-Linien-Linien-Linienkripte
