Les modèles de conception sont des solutions éprouvées en PHP pour créer du code maintenable, évolutif et réutilisable. Les modèles de conception de base peuvent être divisés en créatifs, structurels et comportementaux. Des cas pratiques démontrent l'application de modèles de conception dans le système de panier d'achat, notamment l'utilisation du modèle d'usine pour créer des objets de service de remise, l'utilisation du modèle proxy pour ajouter des fonctions de journalisation au panier et la mise en œuvre de divers calculs de remise via le modèle de stratégie.
Modèles de conception PHP : du débutant à la maîtrise
Introduction
Les modèles de conception sont des solutions de codage éprouvées pour résoudre les problèmes de programmation courants. En PHP, les modèles de conception nous aident à écrire du code maintenable, extensible et réutilisable.
Modèle de conception de base
Modèle créatif : Fournit un mécanisme pour créer des objets.
Modèle structurel : Définissez la relation entre les classes et les objets.
Modèle comportemental : Définit la façon dont les objets communiquent et collaborent.
Cas pratique : Panier d'achat
Considérons un système de panier d'achat, qui contient les classes suivantes :
Cart
: Représente le panier, qui stocke les articles achetés. Cart
:表示购物车,存储购买的物品。Item
:表示购物车中的单个物品。DiscountService
:提供计算折扣的接口。使用工厂模式创建 DiscountService
对象:
interface DiscountServiceFactory { public static function create(): DiscountService; } class NormalDiscountService implements DiscountService { // ... } class PremiumDiscountService implements DiscountService { // ... } class DiscountServiceFactoryImpl implements DiscountServiceFactory { public static function create(): DiscountService { if (isPremiumCustomer()) { return new PremiumDiscountService(); } return new NormalDiscountService(); } }
使用代理模式为 Cart
Article
: Représente un seul article dans le panier.
DiscountService
: Fournit une interface pour calculer les remises.
Utilisez le modèle d'usine pour créer l'objet DiscountService
:
class CartLoggerProxy extends Cart { private $logger; public function __construct(Cart $cart, Logger $logger) { parent::__construct(); $this->cart = $cart; $this->logger = $logger; } public function addItem(Item $item): void { parent::addItem($item); $this->logger->log("Added item to cart"); } // 其他方法类似处理 }
Utilisez le modèle de proxy pour ajouter une fonction de journalisation au Cart
:
interface DiscountStrategy { public function calculateDiscount(Cart $cart): float; } class NoDiscountStrategy implements DiscountStrategy { public function calculateDiscount(Cart $cart): float { return 0; } } class FlatDiscountStrategy implements DiscountStrategy { private $discount; public function __construct(float $discount) { $this->discount = $discount; } public function calculateDiscount(Cart $cart): float { return $cart->getTotal() * $this->discount; } } // ... 更多策略 $context = new DiscountContext(); if (isPremiumCustomer()) { $context->setStrategy(new PremiumDiscountStrategy()); } else { $context->setStrategy(new NoDiscountStrategy()); } $discount = $context->calculateDiscount();
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!