ホームページ >バックエンド開発 >PHPチュートリアル >初心者から熟練者までの PHP デザイン パターン
デザイン パターンは、保守可能、スケーラブル、再利用可能なコードを作成するための PHP の実績のあるソリューションです。基本的なデザイン パターンは、クリエイティブ、構造、動作に分類できます。実際のケースでは、ファクトリ パターンを使用した割引サービス オブジェクトの作成、プロキシ パターンを使用したショッピング カートへのログ機能の追加、戦略パターンによるさまざまな割引計算の実装など、ショッピング カート システムにおける設計パターンの適用を示します。
PHP デザイン パターン: 初心者から熟練者まで
はじめに
デザイン パターンは、一般的なプログラミングの問題を解決するための実績のあるコーディング ソリューションです。 PHP では、デザイン パターンは、保守可能、拡張可能、再利用可能なコードを作成するのに役立ちます。
基本デザインパターン
クリエイティブパターン: オブジェクトを作成するためのメカニズムを提供します。
構造パターン: クラスとオブジェクト間の関係を定義します。
行動パターン: オブジェクトがどのように通信し、連携するかを定義します。
実際のケース: ショッピング カート
次のクラスを含むショッピング カート システムを考えてみましょう:
Cart
: 購入した商品を保管するショッピング カートを表します。 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
Item
: ショッピング カート内の 1 つの項目を表します。
DiscountService
: 割引を計算するためのインターフェイスを提供します。
ファクトリーパターンを使用して 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"); } // 其他方法类似处理 }
プロキシパターンを使用して 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();🎜🎜 戦略を通じてさまざまな成果を達成しますパターンの割引計算: 🎜🎜rrreee🎜🎜結論🎜🎜🎜 デザインパターンを使用することで、エレガントで柔軟で保守しやすい PHP コードを作成できます。この記事で紹介した基本的な設計パターンは、プログラミングの幅広い課題を解決し、高品質のソフトウェアを構築するのに役立ちます。 🎜
以上が初心者から熟練者までの PHP デザイン パターンの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。