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 !
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 !
Code complet : https://github.com/zhangyue0503/designpatterns-php/blob/master/19.facade/source/facade.php
Exemple
Code source complet : https://github.com/zhangyue0503/designpatterns-php/blob/master/19.facade/source/facade-push.php
Instructions<?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!