Table des matières
Diagramme de classes Gof et explication
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.
Maison développement back-end tutoriel php Une analyse approfondie du modèle de méthode de modèle en PHP

Une analyse approfondie du modèle de méthode de modèle en PHP

Jul 23, 2021 pm 07:25 PM
php modèle de méthode de modèle 设计模式

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.

Une analyse approfondie du modèle de méthode de modèle en 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

Une analyse approfondie du modèle de méthode de modèle en PHP

Implémentation du code

abstract class AbstractClass
{
    public function TemplateMethod()
    {
        $this->PrimitiveOperation1();
        $this->PrimitiveOperation2();
    }

    abstract public function PrimitiveOperation1();
    abstract public function PrimitiveOperation2();
}
Copier après la connexion

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;
    }
}
Copier après la connexion

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();
Copier après la connexion

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 »
Dans l'entreprise, je recommande fortement la gestion de projet agile. Bien sûr, cela ne veut pas dire que la gestion de projet traditionnelle est mauvaise, mais l'agilité est plus adaptée à un travail plat et à court terme. et une entreprise rapide comme la nôtre. En agile, nous utilisons le framework Scurm, qui est en fait un modèle. Il définit quatre types de réunions, trois types de personnes et trois outils. Dans la mise en œuvre spécifique de chaque projet, nous respecterons ces règles, mais la mise en œuvre spécifique ne sera pas la même. Par exemple, parfois nous répétons une fois par semaine, et parfois nous répétons une fois par mois. Parfois, nous n'avons pas besoin d'une réunion rétrospective, mais nous organisons ensemble les réunions de rétrospective et de révision. Quoi qu’il en soit, nous réaliserons un développement de projet flexible basé sur Scurm. En tant que leader, il me suffit de rappeler le processus de base de Scurm dans chaque projet. La force de l’entreprise est donc indissociable de l’apprentissage de chacun. Bien sûr, les choses utiles doivent être apprises, partagées et appliquées à tout moment ! !

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 cache

Une analyse approfondie du modèle de méthode de modèle en PHP

Code source complet : https://github.com/zhangyue0503/designpatterns-php/blob/master/20.template-method/source/template-method-cache.php

<?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 &#39;获取Memcached配置文件!&#39;, PHP_EOL;
        $this->config = &#39;memcached&#39;;
    }
    public function OpenConnection()
    {
        echo &#39;链接memcached!&#39;, PHP_EOL;
        $this->conn = 1;
    }
    public function CheckConnection()
    {
        if ($this->conn) {
            echo &#39;Memcached连接成功!&#39;, PHP_EOL;
        } else {
            echo &#39;Memcached连接失败,请检查配置项!&#39;, PHP_EOL;
        }
    }
}

class RedisCache extends Cache
{
    public function GetConfig()
    {
        echo &#39;获取Redis配置文件!&#39;, PHP_EOL;
        $this->config = &#39;redis&#39;;
    }
    public function OpenConnection()
    {
        echo &#39;链接redis!&#39;, PHP_EOL;
        $this->conn = 0;
    }
    public function CheckConnection()
    {
        if ($this->conn) {
            echo &#39;Redis连接成功!&#39;, PHP_EOL;
        } else {
            echo &#39;Redis连接失败,请检查配置项!&#39;, PHP_EOL;
        }
    }
}

$m = new MemcachedCache();

$r = new RedisCache();
Copier après la connexion
Description

  • 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!

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.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Commandes de chat et comment les utiliser
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

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