Maison  >  Article  >  développement back-end  >  Explorez le modèle de modèle dans la programmation orientée objet PHP

Explorez le modèle de modèle dans la programmation orientée objet PHP

WBOY
WBOYoriginal
2023-08-10 18:01:51702parcourir

Explorez le modèle de modèle dans la programmation orientée objet PHP

Explorez le modèle de modèle dans la programmation orientée objet PHP

Dans la programmation orientée objet PHP, le modèle de modèle est un modèle de conception important. Il permet aux développeurs de définir le cadre d'un algorithme et de décharger certaines étapes vers des sous-classes tout en gardant la structure globale de l'algorithme inchangée. Cet article présentera les concepts de base et l'utilisation du modèle de modèle, et illustrera son application en PHP à travers un exemple.

Le concept de base du modèle de modèle est de définir une classe abstraite, qui contient un cadre algorithmique, dans lequel certaines méthodes spécifiques sont implémentées par des sous-classes. De cette façon, la structure globale de l’algorithme est fixée par la classe parent, mais certaines étapes sont personnalisées par la sous-classe. En d’autres termes, la classe parent fournit un modèle et la sous-classe remplit le modèle selon ses propres besoins.

Vous trouverez ci-dessous un exemple de code qui montre comment utiliser le modèle de modèle pour implémenter une fonction de panier simple en PHP.

<?php
abstract class ShoppingCartTemplate {
    // 模板方法,定义购物车算法的框架
    public final function processCart() {
        $this->addItems();
        $this->calculateTotal();
        $this->showCart();
    }
    
    // 添加商品的具体实现由子类来完成
    protected abstract function addItems();
    
    // 计算总价的具体实现由子类来完成
    protected abstract function calculateTotal();
    
    //展示购物车的具体实现由子类来完成
    protected abstract function showCart();
}

class ShoppingCart1 extends ShoppingCartTemplate {
    protected function addItems() {
        echo "添加商品到购物车1中。<br/>";
    }
    
    protected function calculateTotal() {
        echo "计算购物车1的总价。<br/>";
    }
    
    protected function showCart() {
        echo "展示购物车1中的商品。<br/>";
    }
}

class ShoppingCart2 extends ShoppingCartTemplate {
    protected function addItems() {
        echo "添加商品到购物车2中。<br/>";
    }
    
    protected function calculateTotal() {
        echo "计算购物车2的总价。<br/>";
    }
    
    protected function showCart() {
        echo "展示购物车2中的商品。<br/>";
    }
}

// 调用购物车1
$cart1 = new ShoppingCart1();
$cart1->processCart();

echo "<br/>";

// 调用购物车2
$cart2 = new ShoppingCart2();
$cart2->processCart();
?>

Dans le code ci-dessus, nous définissons une classe abstraite ShoppingCartTemplate comme classe de modèle. Il existe une méthode processCart() comme méthode modèle, qui corrige le cadre algorithmique du panier. Les trois méthodes restantes addItems(), calculateTotal() et showCart() sont implémentées par des sous-classes spécifiques. ShoppingCartTemplate作为模板类。其中有一个processCart()方法作为模板方法,固定了购物车的算法框架。剩下的三个方法addItems()calculateTotal()showCart()则由具体的子类来实现。

我们创建了ShoppingCart1ShoppingCart2两个子类,并分别实现了三个方法。当我们调用processCart()

Nous avons créé deux sous-classes, ShoppingCart1 et ShoppingCart2, et implémenté respectivement trois méthodes. Lorsque nous appelons la méthode processCart(), le framework de la classe modèle est exécuté et les étapes spécifiques sont complétées par la sous-classe. De cette manière, différents paniers peuvent mettre en œuvre différentes méthodes d'ajout de produits, de calcul des prix totaux et d'affichage des produits en fonction de leurs propres besoins, tandis que le cadre global reste inchangé.

En général, le modèle de modèle fournit un moyen simple et flexible d'implémenter un cadre fixe pour les algorithmes, mais certaines étapes peuvent être personnalisées par des sous-classes. Dans la programmation orientée objet PHP, le modèle de modèle peut aider les développeurs à mieux organiser le code et à améliorer la réutilisabilité et la maintenabilité du code.


Source de référence :

[1] Modèle de méthode de modèle, https://www.tutorialspoint.com/design_pattern/template_pattern.htm🎜

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