ホームページ  >  記事  >  バックエンド開発  >  PHP戦略パターンの定義と使い方(詳細解説)

PHP戦略パターンの定義と使い方(詳細解説)

墨辰丷
墨辰丷オリジナル
2018-05-19 09:08:143071ブラウズ

この記事では、主に 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戦略パターンの定義と使い方(詳細解説)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。