Découvrez le modèle de façade en PHP dans un article
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.
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
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; } }
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(); } }
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();
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.
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 SMSInstructions<?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 '发送阿里云短信!', PHP_EOL; } public function Push() { echo '推送阿里云通知!', PHP_EOL; } } class JiGuangService { public function Send() { echo '发送极光短信!', PHP_EOL; } public function Push() { echo '推送极光通知!', PHP_EOL; } } $send = new Send(); $send->PushAndSendAliYun(); $send->PushAndSendJiGuang();Copier après la connexionToujours 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
Auteur : Hardcore Project Manager
- Adresse originale : https://juejin.cn/post/6844903988085653518
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!

Outils d'IA chauds

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

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

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

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.

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

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.

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

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,

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

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 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.
