


Une analyse approfondie du modèle de méthode de modèle en PHP
Dans l'article précédent "Comprendre le modèle de façade en PHP dans un article", nous avons présenté le modèle de façade en PHP. Cet article vous amènera à comprendre le modèle de méthode de modèle dans le modèle de conception PHP.
Le modèle de méthode modèle est également l'un des modèles que nous utilisons souvent par inadvertance. Ce modèle est la meilleure interprétation de l'héritage. Lorsqu'il y a des actions répétées dans la sous-classe, elles sont extraites et placées dans la classe parent pour un traitement unifié. Il s'agit de l'explication la plus simple et la plus populaire du modèle de méthode modèle. Tout comme lorsque nous réalisons habituellement des projets, le processus de chaque projet est en fait le même, y compris les processus de recherche, de développement, de test, de déploiement et en ligne. Dans chaque projet, la mise en œuvre de ces processus ne sera pas exactement la même. Ce processus est comme une méthode modèle, nous permettant de développer à chaque fois selon ce processus.
Diagramme de classes Gof et explication
Définition GoF : Définir le squelette d'un algorithme dans une opération, tout en reportant certaines étapes aux sous-classes. TemplateMethod permet aux sous-classes de redéfinir des étapes spécifiques d'un algorithme sans modifier la structure de l'algorithme.
Diagramme de classes GoF
Implémentation du code
abstract class AbstractClass { public function TemplateMethod() { $this->PrimitiveOperation1(); $this->PrimitiveOperation2(); } abstract public function PrimitiveOperation1(); abstract public function PrimitiveOperation2(); }
Définissez une classe abstraite avec une méthode modèle TemplateMethod(), dans laquelle nous appelons la méthode d'opération de l'algorithme. Ces méthodes abstraites d’algorithmes sont implémentées dans des sous-classes.
class ConcreteClassA extends AbstractClass { public function PrimitiveOperation1() { echo '具体类A实现方法1', PHP_EOL; } public function PrimitiveOperation2() { echo '具体类A实现方法2', PHP_EOL; } } class ConcreteClassB extends AbstractClass { public function PrimitiveOperation1() { echo '具体类B实现方法1', PHP_EOL; } public function PrimitiveOperation2() { echo '具体类B实现方法2', PHP_EOL; } }
Classes d'implémentation spécifiques, elles n'ont besoin que d'implémenter l'algorithme défini par la classe parent.
$c = new ConcreteClassA(); $c->TemplateMethod(); $c = new ConcreteClassB(); $c->TemplateMethod();
Dans l'appel du client, la sous-classe est instanciée, mais la méthode modèle de la classe parent héritée par la sous-classe est appelée. Des appels d'algorithmes unifiés peuvent être réalisés.
- Je crois que quiconque a fait du développement orienté objet aura utilisé dans une certaine mesure le modèle de méthode modèle. Parce que c'est très courant
- Dans certains frameworks, certaines classes fonctionnelles ont souvent la fonction d'initialisation, et de nombreuses autres fonctions internes sont appelées dans la fonction d'initialisation. Il s'agit en fait d'une application du modèle de méthode modèle
- Le modèle de méthode modèle Hook. les fonctions peuvent être facilement mises en œuvre. Tout comme de nombreux modèles ou fonctions de hook préparés pour vous dans les systèmes open source. Par exemple, certains programmes de blog open source réserveront des espaces publicitaires ou des fonctions de hook dans des emplacements spéciaux pour que les utilisateurs puissent les implémenter à la demande. Le modèle de méthode modèle convient pour : implémenter les parties constantes d'un algorithme en une seule fois et convertir les parties variables. à la sous-classe pour l'implémenter ; extraire les comportements courants dans la sous-classe et les concentrer dans la classe parent ; contrôler l'extension de la sous-classe ;
- Ce modèle incarne un principe appelé "Loi d'Hollywood", qui est "Ne regardez pas" pour nous, nous venons à vous »
Code complet : https://github.com/zhangyue0503/designpatterns-php/blob/master/20.template-method/source/template-method.php
Example
Plus de SMS, cette fois, nous avons implémenté la partie initialisation d'une classe Cache. Tout comme les classes d'outils dans certains frameworks mentionnés ci-dessus. Généralement, nous utiliserons Memcached ou Redis pour implémenter Cache, nous extrayons donc une classe Cache publique, puis laissons les classes d'implémentation Cache de Memcached et Redis en hériter. Dans la classe publique, certains travaux d'initialisation de la classe d'implémentation sont effectués via des méthodes modèles. Ces tâches sont appelées uniformément par la classe parent. La classe d'implémentation n'a besoin que d'implémenter le contenu spécifique de chaque étape.
Diagramme des classes de cacheDescription<?php abstract class Cache { private $config; private $conn; public function __construct() { $this->init(); } public function init() { $this->GetConfig(); $this->OpenConnection(); $this->CheckConnection(); } abstract public function GetConfig(); abstract public function OpenConnection(); abstract public function CheckConnection(); } class MemcachedCache extends Cache { public function GetConfig() { echo '获取Memcached配置文件!', PHP_EOL; $this->config = 'memcached'; } public function OpenConnection() { echo '链接memcached!', PHP_EOL; $this->conn = 1; } public function CheckConnection() { if ($this->conn) { echo 'Memcached连接成功!', PHP_EOL; } else { echo 'Memcached连接失败,请检查配置项!', PHP_EOL; } } } class RedisCache extends Cache { public function GetConfig() { echo '获取Redis配置文件!', PHP_EOL; $this->config = 'redis'; } public function OpenConnection() { echo '链接redis!', PHP_EOL; $this->conn = 0; } public function CheckConnection() { if ($this->conn) { echo 'Redis连接成功!', PHP_EOL; } else { echo 'Redis连接失败,请检查配置项!', PHP_EOL; } } } $m = new MemcachedCache(); $r = new RedisCache();Copier après la connexion
- Nous avons implémenté une classe de cache si simple. Est-ce très similaire au code de nombreux frameworks ?
- Les sous-classes doivent uniquement définir leur propre implémentation, et le reste du code répétitif est laissé à la classe parente, elles doivent toutes implémenter elles-mêmes une méthode init()
- Bien sûr, d'autres implémentations. doit être ajouté, il vous suffit d'hériter de la classe parent Cache et de compléter votre propre implémentation. Les clients peuvent faire face à ces classes d'implémentation très facilement, car ils savent qu'ils n'ont besoin que d'appeler d'abord la méthode d'initialisation pour utiliser cette classe, peu importe. Quelle classe d'implémentation est la même
Adresse originale : https://juejin.cn/post/6844903989348139021
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!

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.
