Inhaltsverzeichnis
Gof-Klassendiagramm und Erklärung
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!
Heim Backend-Entwicklung PHP-Tutorial Lassen Sie uns über das abstrakte Factory-Muster in PHP sprechen

Lassen Sie uns über das abstrakte Factory-Muster in PHP sprechen

Jun 21, 2021 pm 06:29 PM
php

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.

Lassen Sie uns über das abstrakte Factory-Muster in PHP sprechen

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:

Lassen Sie uns über das abstrakte Factory-Muster in PHP sprechen

  • 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;
    }
}
Nach dem Login kopieren

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();
    }
}
Nach dem Login kopieren
Und unsere Fabrik ist auch Fabrik 1 und Fabrik 2, Fabrik 1 produziert zwei verwandte Produkte, A1 und B1. Für die verknüpften Produkte produziert Fabrik 2 zwei Produkte, A2 und B2. Okay, ich weiß, dass es hier noch etwas abstrakt ist, und ich verstehe vielleicht immer noch nicht, warum das so ist. Nehmen wir weiterhin die Mobiltelefonproduktion als Beispiel.

Unsere Mobiltelefonmarke ist populär geworden, daher werden auch die Peripherieprodukte wie Handyfolien und Handyhüllen an Abstract Factory übergeben, um mir zu helfen. Wie beim letzten Mal erwähnt, habe ich bereits mehrere verschiedene Arten von Mobiltelefonen, daher werde ich wie bisher das Mobiltelefonmodell 1001 (Produkt A1) und gleichzeitig die Mobiltelefonfolie (Produkt B1) produzieren Die Handyhülle des Modells 1001 (Produkt B1) wird ebenfalls in der Fabrik in Hengyang hergestellt. Das Mobiltelefonmodell 1002 (ProduktA2) befindet sich noch in der Fabrik in Zhengzhou (Fabrik2), daher sollten die Mobiltelefonfolie (ProduktB2) und die Mobiltelefonfolie (ProduktC2) dieses Modells ihnen überlassen werden. Also habe ich gerade eine Bestellung bei der Hauptfabrik aufgegeben. Sie haben verschiedene Fabriken gebeten, einen kompletten Satz Mobiltelefonprodukte für mich herzustellen, und ich konnte den Satz direkt verkaufen! !

Vollständiger Code: Abstraktes Fabrikmuster

https://github.com/zhangyue0503/designpatterns-php/blob/master/03.abstract-factory/source/abstract-factory.php

Beispiel

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 &#39;阿里云短信(原阿里大鱼)发送成功!短信内容:&#39; . $msg;
    }
}

class BaiduYunMessage implements Message{
    public function send(string $msg){
        // 调用接口,发送短信
        // xxxxx
        return &#39;百度SMS短信发送成功!短信内容:&#39; . $msg;
    }
}

class JiguangMessage implements Message{
    public function send(string $msg){
        // 调用接口,发送短信
        // xxxxx
        return &#39;极光短信发送成功!短信内容:&#39; . $msg;
    }
}

interface Push {
    public function send(string $msg);
}

class AliYunPush implements Push{
    public function send(string $msg){
        // 调用接口,发送客户端推送
        // xxxxx
        return &#39;阿里云Android&iOS推送发送成功!推送内容:&#39; . $msg;
    }
}

class BaiduYunPush implements Push{
    public function send(string $msg){
        // 调用接口,发送客户端推送
        // xxxxx
        return &#39;百度Android&iOS云推送发送成功!推送内容:&#39; . $msg;
    }
}

class JiguangPush implements Push{
    public function send(string $msg){
        // 调用接口,发送客户端推送
        // xxxxx
        return &#39;极光推送发送成功!推送内容:&#39; . $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(&#39;您已经很久没有登录过系统了,记得回来哦!&#39;);
echo $push->send(&#39;您有新的红包已到帐,请查收!&#39;);
Nach dem Login kopieren

Vollständiger Quellcode: SMS-VersandfabrikmethodeLassen Sie uns über das abstrakte Factory-Muster in PHP sprechen

https://github.com/zhangyue0503/designpatterns-php/blob/master/03.abstract-factory/source / abstract-factory-message-push.php

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!

Erklärung dieser Website
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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

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

Heißer Artikel

<🎜>: Bubble Gum Simulator Infinity - So erhalten und verwenden Sie Royal Keys
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Fusionssystem, erklärt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Flüstern des Hexenbaum
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
<🎜> obscur: Expedition 33 - So erhalten Sie perfekte Chroma -Katalysatoren
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Java-Tutorial
1676
14
PHP-Tutorial
1278
29
C#-Tutorial
1257
24
PHP und Python: Verschiedene Paradigmen erklärt PHP und Python: Verschiedene Paradigmen erklärt Apr 18, 2025 am 12:26 AM

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: Code Beispiele und Vergleich PHP und Python: Code Beispiele und Vergleich Apr 15, 2025 am 12:07 AM

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: Datenbanken und serverseitige Logik bearbeiten PHP: Datenbanken und serverseitige Logik bearbeiten Apr 15, 2025 am 12:15 AM

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.

Zweck von PHP: Erstellen dynamischer Websites Zweck von PHP: Erstellen dynamischer Websites Apr 15, 2025 am 12:18 AM

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.

Wählen Sie zwischen PHP und Python: Ein Leitfaden Wählen Sie zwischen PHP und Python: Ein Leitfaden Apr 18, 2025 am 12:24 AM

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 und Python: Ein tiefes Eintauchen in ihre Geschichte PHP und Python: Ein tiefes Eintauchen in ihre Geschichte Apr 18, 2025 am 12:25 AM

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.

Warum PHP verwenden? Vorteile und Vorteile erläutert Warum PHP verwenden? Vorteile und Vorteile erläutert Apr 16, 2025 am 12:16 AM

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.

Auswirkungen von PHP: Webentwicklung und darüber hinaus Auswirkungen von PHP: Webentwicklung und darüber hinaus Apr 18, 2025 am 12:10 AM

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

See all articles