この記事では、主に PHP 戦略パターンの定義と使用法を紹介し、サンプルの形式で PHP 戦略パターンの原理、実装、使用法を簡単に分析します。必要な友人は参考にしてください。
詳細は次のとおりです。
概要 戦略パターンはオブジェクトの行動パターンに属します。その目的は、アルゴリズムのセットをターゲットにし、各アルゴリズムを共通のインターフェイスを持つ独立したクラスにカプセル化して、相互に置き換えられるようにすることです。戦略パターンでは、クライアントに影響を与えることなくアルゴリズムを変更できます
UML 図
戦略パターンの主な役割このパターンは 3 つの役割で設計されています:
環境role (Context): Strategy への参照を保持します Abstract Strategy (Strategy) role
: これは抽象ロールであり、通常はインターフェイスまたは抽象クラスによって実装されます。このロールは、特定の戦略クラスに必要なすべてのインターフェイスを提供します具体的な戦略 (ConcreateStrategy) ロール
: 関連するアルゴリズムまたは動作をパックします
使用シナリオ今、ショッピング カート システムを設計するとします。最も単純なケースです。すべての商品の単価に数量を乗じることですが、実際の状況はこれよりもはるかに複雑です。例:一般会員は割引なし、中級会員は20%割引、上級会員は30%割引となります。
上記の説明によると、商品価格は以下のアルゴリズムのいずれかに基づいています:
一般会員は割引なし
中級会員は20%オフ上級会員は30%オフ
UML図
実装コード:
<?php /** * 策略抽象类 * @author wzy * */ interface Strategy { public function calPrice ($price); } /** * 普通会员策略类 * * @author wzy * */ class PrimaryStrategy implements Strategy { public function calPrice ($price) { echo "普通会员无折扣"; return $price; } } /** * 中级会员策略类 * * @author wzy * */ class MiddleStrategy implements Strategy { public function calPrice ($price) { echo "中级会员8折优惠"; return $price * 0.8; } } /** * 高级会员策略类 * * @author wzy * */ class HighStrategy implements Strategy { public function calPrice ($price) { echo "高级会员7折优惠"; return $price * 0.7; } } /** * Context实现类 * * @author wzy * */ class Price { /** * 具体的策略类对象 * * @var object */ private $strategyInstance; /** * 构造函数,传入一个具体的策略对象 * * @param object $instance */ public function __construct ($instance) { $this->strategyInstance = $instance; } /** * 计算货品的价格 * * @param double $price */ public function quote ($price) { return $this->strategyInstance->calPrice($price); } } /** * 客户端操作 */ $high = new HighStrategy(); $priceClass = new Price($high); $price = $priceClass->quote(400); echo $price; ?>
戦略パターンの確認戦略パターンの焦点は、アルゴリズムを実装する方法ではなく、これらのアルゴリズムをどのように編成して呼び出すかです。により、プログラム構造がより柔軟になり、拡張性と保守性が向上します
アルゴリズムの平等性 戦略モデルの優れた特徴は、各戦略アルゴリズムが平等であることです。一連の特定の戦略アルゴリズムでは、全員が同じステータスを持ち、アルゴリズム間の相互変換が可能です
実行時戦略の一意性実行中、戦略モードはその瞬間にしか使用できませんが、特定の戦略実装オブジェクトは、異なる戦略実装間で動的に切り替えることができます。同時に存在する
は 1 つだけです。説明
以上がPHP戦略パターンの定義と使い方(詳細解説)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。