Table des matières
Diagramme de classe Gof et explication
Cette fois, nous enverrons le message texte à La dimension de l'envoi est packagée, et les interfaces des différents opérateurs SMS et push sont packagées. Lors de l'envoi, il vous suffit d'utiliser la classe d'envoi pour contrôler l'envoi de SMS ou de push à l'aide de différents services tiers. quand on y pense. Du drap de laine !
Maison développement back-end tutoriel php Découvrez le modèle de façade en PHP dans un article

Découvrez le modèle de façade en PHP dans un article

Jul 22, 2021 pm 06:46 PM
php 设计模式 mode façade

Dans l'article précédent "Une brève présentation du mode pont en PHP", nous avons présenté le mode pont en PHP. Cet article vous amènera à comprendre le mode façade dans le modèle de conception PHP.

Découvrez le modèle de façade en PHP dans un article

Mode façade, également appelé mode apparence. Qu'il s'agisse de la façade ou de l'apparence, c'est notre support vers le monde extérieur, tout comme notre visage. Par conséquent, la plus grande caractéristique de ce modèle est d’être « beau ». Comment le dire ? Un tas d'appels d'objets complexes me rendent confus, en particulier lors de la mise à niveau et de la maintenance d'anciens systèmes. Utilisez la façade pour encapsuler les appels de fonction de l'ancien système. De l'extérieur, elle ressemble au nouveau système. C'est le but du motif de façade !

Diagramme de classe Gof et explication

Définition GoF : fournit une interface cohérente pour un ensemble d'interfaces dans un sous-système. Le modèle Facade définit une interface de haut niveau, ce qui rend ce sous-système plus facile à utiliser.

Diagramme de classes GoF

Découvrez le modèle de façade en PHP dans un article

Implémentation du code

class SubSystemOne
{
    public function MethodOne()
    {
        echo '子系统方法一', PHP_EOL;
    }
}
class SubSystemTwo
{
    public function MethodTwo()
    {
        echo '子系统方法二', PHP_EOL;
    }
}
class SubSystemThree
{
    public function MethodThree()
    {
        echo '子系统方法三', PHP_EOL;
    }
}
class SubSystemFour
{
    public function MethodFour()
    {
        echo '子系统方法四', PHP_EOL;
    }
}
Copier après la connexion

Définir quatre ou N sous-systèmes supplémentaires Il n'y a rien à dire à ce sujet. Vous pouvez imaginer qu'il existe de nombreux sous-systèmes, et ils ne le sont pas nécessairement. Aussi semblables que soient ces quatre sous-systèmes, ils peuvent être très différents.

class Facade
{

    private $subStytemOne;
    private $subStytemTwo;
    private $subStytemThree;
    private $subStytemFour;
    public function __construct()
    {
        $this->subSystemOne = new SubSystemOne();
        $this->subSystemTwo = new SubSystemTwo();
        $this->subSystemThree = new SubSystemThree();
        $this->subSystemFour = new SubSystemFour();
    }

    public function MethodA()
    {
        $this->subSystemOne->MethodOne();
        $this->subSystemTwo->MethodTwo();
    }
    public function MethodB()
    {
        $this->subSystemOne->MethodOne();
        $this->subSystemTwo->MethodTwo();
        $this->subSystemThree->MethodThree();
        $this->subSystemFour->MethodFour();
    }
}
Copier après la connexion

Ces sous-systèmes sont regroupés via la classe façade, et seules les méthodes de façade nouvellement définies sont fournies au monde extérieur.

$facade = new Facade();
$facade->MethodA();
$facade->MethodB();
Copier après la connexion

Appeler le client est très simple. Nous n'avons pas besoin de savoir quels sous-systèmes sont spécifiquement appelés, nous avons seulement besoin de savoir ce que font ces méthodes sur la façade !

  • Le mode façade est si simple, et tant que vous êtes un véritable ami qui a fait du développement dans le projet, vous devez avoir utilisé ce mode sans le savoir
  • Quand vous devez fournir un simple pour un sous-système complexe Quand En ce qui concerne les interfaces, le motif de la façade est très adapté. Dans le même temps, s'il existe une grande dépendance entre le programme client et la partie implémentation de la classe abstraite, le modèle de façade peut également être introduit pour le découplage afin d'améliorer l'indépendance et la maintenabilité du sous-système. De plus, lorsque vous devez construire un sous-système hiérarchique, la façade peut servir de point d'entrée pour chaque couche du sous-système, je pense que toute personne ayant utilisé le framework doit avoir utilisé le système de façade dans Laravel, tel que : Cache : . mettre(). Dans Laravel, la façade est implémentée à l'aide d'une méthode magique __callStatic(). Laissez ensuite les méthodes de l’objet être appelées directement à l’aide de méthodes statiques. N'est-ce pas incroyable ? Les amis intéressés peuvent consulter le code source, qui se trouve dans /Illuminate/Support/Facades/Facade.php.
  • Point clé : La structure à trois couches ou MVC est également une manifestation du motif de la façade. Comme mentionné ci-dessus, le mode façade est adapté à la maintenance de sous-systèmes hiérarchiques. La structure à trois niveaux, MVC, MVP et MVVM, est essentiellement destinée à la superposition, et le but de la superposition est de réduire la complexité du système.
Vendre nos téléphones mobiles ne suffit pas. Être une entreprise d'électroménager de haute technologie comme X Mi est notre objectif ultime. Cependant, nous ne pouvons pas produire autant d'appareils électroménagers, nous avons donc décidé de construire un centre commercial (Façade) pour permettre à des commerçants de très haute qualité de rejoindre notre camp et de mettre leurs produits (Sous-Système) dans le centre commercial pour les vendre ensemble. Bien entendu, ces produits ont été soigneusement sélectionnés par nos soins, et ils sont définitivement les meilleurs parmi les meilleurs ! !

Code complet : https://github.com/zhangyue0503/designpatterns-php/blob/master/19.facade/source/facade.php

Exemple

Cette fois, nous enverrons le message texte à La dimension de l'envoi est packagée, et les interfaces des différents opérateurs SMS et push sont packagées. Lors de l'envoi, il vous suffit d'utiliser la classe d'envoi pour contrôler l'envoi de SMS ou de push à l'aide de différents services tiers. quand on y pense. Du drap de laine !

Diagramme des classes d'envoi de SMS

Découvrez le modèle de façade en PHP dans un article

Code source complet : https://github.com/zhangyue0503/designpatterns-php/blob/master/19.facade/source/facade-push.php

<?php

class Send
{

    private $aliYunService;
    private $jiGuangService;

    private $message;
    private $push;

    public function __construct()
    {
        $this->aliYunService = new AliYunService();
        $this->jiGuangService = new JiGuangService();

        $this->message = new MessageInfo();
        $this->push = new PushInfo();
    }

    public function PushAndSendAliYun()
    {
        $this->message->Send($this->aliYunService);
        $this->push->Push($this->aliYunService);
    }

    public function PushAndSendJiGuang()
    {
        $this->message->Send($this->jiGuangService);
        $this->push->Push($this->jiGuangService);
    }
}

class MessageInfo
{
    public function Send($service)
    {
        $service->Send();
    }
}

class PushInfo
{
    public function Push($service)
    {
        $service->Push();
    }
}

class AliYunService
{
    public function Send()
    {
        echo &#39;发送阿里云短信!&#39;, PHP_EOL;
    }
    public function Push()
    {
        echo &#39;推送阿里云通知!&#39;, PHP_EOL;
    }
}

class JiGuangService
{
    public function Send()
    {
        echo &#39;发送极光短信!&#39;, PHP_EOL;
    }
    public function Push()
    {
        echo &#39;推送极光通知!&#39;, PHP_EOL;
    }
}

$send = new Send();
$send->PushAndSendAliYun();
$send->PushAndSendJiGuang();
Copier après la connexion
Instructions

Toujours la recette familière et le goût familier. Ici, vous pouvez imaginer que nos classes de services tiers sont toutes des interfaces plus anciennes, ou qu'elles sont déjà des interfaces très complexes. À l'heure actuelle, l'utilisation du modèle d'apparence peut coopérer avec le nouveau système et réduire la complexité. Cependant, il convient de noter que la classe d'apparence elle-même peut devenir une source de complexité. Heureusement, nous pouvons suivre le principe de responsabilité unique. catégorie d'apparence, faites juste une chose
  • Adresse originale : https://juejin.cn/post/6844903988085653518
Auteur : Hardcore Project Manager

Apprentissage recommandé : "

Tutoriel vidéo PHP

"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Guide d'installation et de mise à niveau de PHP 8.4 pour Ubuntu et Debian Guide d'installation et de mise à niveau de PHP 8.4 pour Ubuntu et Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 apporte plusieurs nouvelles fonctionnalités, améliorations de sécurité et de performances avec une bonne quantité de dépréciations et de suppressions de fonctionnalités. Ce guide explique comment installer PHP 8.4 ou mettre à niveau vers PHP 8.4 sur Ubuntu, Debian ou leurs dérivés. Bien qu'il soit possible de compiler PHP à partir des sources, son installation à partir d'un référentiel APT comme expliqué ci-dessous est souvent plus rapide et plus sécurisée car ces référentiels fourniront les dernières corrections de bogues et mises à jour de sécurité à l'avenir.

Comment configurer Visual Studio Code (VS Code) pour le développement PHP Comment configurer Visual Studio Code (VS Code) pour le développement PHP Dec 20, 2024 am 11:31 AM

Visual Studio Code, également connu sous le nom de VS Code, est un éditeur de code source gratuit – ou environnement de développement intégré (IDE) – disponible pour tous les principaux systèmes d'exploitation. Avec une large collection d'extensions pour de nombreux langages de programmation, VS Code peut être c

7 fonctions PHP que je regrette de ne pas connaître auparavant 7 fonctions PHP que je regrette de ne pas connaître auparavant Nov 13, 2024 am 09:42 AM

Si vous êtes un développeur PHP expérimenté, vous aurez peut-être le sentiment d'y être déjà allé et de l'avoir déjà fait. Vous avez développé un nombre important d'applications, débogué des millions de lignes de code et peaufiné de nombreux scripts pour réaliser des opérations.

Comment analysez-vous et traitez-vous HTML / XML dans PHP? Comment analysez-vous et traitez-vous HTML / XML dans PHP? Feb 07, 2025 am 11:57 AM

Ce tutoriel montre comment traiter efficacement les documents XML à l'aide de PHP. XML (Language de balisage extensible) est un langage de balisage basé sur le texte polyvalent conçu à la fois pour la lisibilité humaine et l'analyse de la machine. Il est couramment utilisé pour le stockage de données et

Expliquez les jetons Web JSON (JWT) et leur cas d'utilisation dans les API PHP. Expliquez les jetons Web JSON (JWT) et leur cas d'utilisation dans les API PHP. Apr 05, 2025 am 12:04 AM

JWT est une norme ouverte basée sur JSON, utilisée pour transmettre en toute sécurité des informations entre les parties, principalement pour l'authentification de l'identité et l'échange d'informations. 1. JWT se compose de trois parties: en-tête, charge utile et signature. 2. Le principe de travail de JWT comprend trois étapes: la génération de JWT, la vérification de la charge utile JWT et l'analyse. 3. Lorsque vous utilisez JWT pour l'authentification en PHP, JWT peut être généré et vérifié, et les informations sur le rôle et l'autorisation des utilisateurs peuvent être incluses dans l'utilisation avancée. 4. Les erreurs courantes incluent une défaillance de vérification de signature, l'expiration des jetons et la charge utile surdimensionnée. Les compétences de débogage incluent l'utilisation des outils de débogage et de l'exploitation forestière. 5. L'optimisation des performances et les meilleures pratiques incluent l'utilisation des algorithmes de signature appropriés, la définition des périodes de validité raisonnablement,

Programme PHP pour compter les voyelles dans une chaîne Programme PHP pour compter les voyelles dans une chaîne Feb 07, 2025 pm 12:12 PM

Une chaîne est une séquence de caractères, y compris des lettres, des nombres et des symboles. Ce tutoriel apprendra à calculer le nombre de voyelles dans une chaîne donnée en PHP en utilisant différentes méthodes. Les voyelles en anglais sont a, e, i, o, u, et elles peuvent être en majuscules ou en minuscules. Qu'est-ce qu'une voyelle? Les voyelles sont des caractères alphabétiques qui représentent une prononciation spécifique. Il y a cinq voyelles en anglais, y compris les majuscules et les minuscules: a, e, i, o, u Exemple 1 Entrée: String = "TutorialSpoint" Sortie: 6 expliquer Les voyelles dans la chaîne "TutorialSpoint" sont u, o, i, a, o, i. Il y a 6 yuans au total

Expliquez la liaison statique tardive en PHP (statique: :). Expliquez la liaison statique tardive en PHP (statique: :). Apr 03, 2025 am 12:04 AM

Liaison statique (statique: :) ​​implémente la liaison statique tardive (LSB) dans PHP, permettant à des classes d'appel d'être référencées dans des contextes statiques plutôt que de définir des classes. 1) Le processus d'analyse est effectué au moment de l'exécution, 2) Recherchez la classe d'appel dans la relation de succession, 3) il peut apporter des frais généraux de performance.

Quelles sont les méthodes PHP Magic (__construct, __ destruct, __ call, __get, __set, etc.) et fournir des cas d'utilisation? Quelles sont les méthodes PHP Magic (__construct, __ destruct, __ call, __get, __set, etc.) et fournir des cas d'utilisation? Apr 03, 2025 am 12:03 AM

Quelles sont les méthodes magiques de PHP? Les méthodes magiques de PHP incluent: 1. \ _ \ _ Construct, utilisé pour initialiser les objets; 2. \ _ \ _ Destruct, utilisé pour nettoyer les ressources; 3. \ _ \ _ Appel, gérer les appels de méthode inexistants; 4. \ _ \ _ GET, Implémentez l'accès à l'attribut dynamique; 5. \ _ \ _ SET, Implémentez les paramètres d'attribut dynamique. Ces méthodes sont automatiquement appelées dans certaines situations, améliorant la flexibilité et l'efficacité du code.

See all articles