PHPのデザインパターン - 戦略パターン

PHP Strategyパターン

1.戦略パターンとは何ですか?

定義:アルゴリズムの特定のセットの動作と特定の状況に対応するために、そのようなとしてパッケージ、及びそれらが相互に置き換えることができる、このモデルは戦略パターンです。

理解することは簡単なことで、nはあなたの選択のためにそこに練習しているポリシーを選択する必要があり結果は上のベースます

2.なぜ戦略パターンを使用できますか?

デザインパターンを使用した後、我々のコードの冗長性が低く、結合度は、各モジュールは、機能対応するポリシーを実行します

もちろん、欠点は、私たちが対応戦略クラスをしなければならない機能ですが、我々は(ThinkPHP、Yii2)は、コントローラは、実際には、戦略設計パターンを反映して、図に相当するMVCアーキテクチャの包括的なビューを持っています。

図3に示すように、サンプルコード

ビジネスシーン

電気の供給業者のサイトでは、さまざまな商品を表示するには、ユーザの性別に応じました。私たちは、商品のカテゴリ(関数showCategory())と広告インプレッション示さなければならない(関数showAdを())

実装

まず、インタフェースで定義されたメソッドを実装するためのインタフェースの必要性を定義する必要があります。

そして、インタフェース・メソッドは、異なるクラスを達成するために定義されています。

最後に、ユーザーに応じて、異なる方法が新しく追加されました。

/ * * 
 * @Purpose:親インタフェース
 *インタフェースのUserInterfaceは
 * / 
インターフェースのUserInterface 
{ 
    / * * 
     * @purposeを照会:
     *ミックス@return 
     * / 
    パブリック 関数showAd(); 

    / * * 
     * @purpose:ディスプレイカテゴリ
     *混合@return 
     * / 
    パブリック 関数showCatetory(); 
} 

/ * * 
 * @purpose:男性ユーザーがユーザーインターフェースを実装
 *クラスMaleUser 
 * / 
クラス MaleUser 実装のUserInterface 
{ 
    / * * 
     * @purpose:ディスプレイ
     混合@return * 
     * / 
    パブリック 関数showAd()
    { 
        エコー "エレクトロニクス" ; 
    } 

    / * * 
     * @purpose:ディスプレイカテゴリ
     *混合@return 
     * / 
    パブリック 関数showCatetory()
    { 
        エコー "デジタルコンピュータを" ; 
    } 
} 

/ * * 
 * @purpose:女性ユーザーは、ユーザーインターフェイスを実装
 *クラスFemaleUser 
 * / 
クラス FemaleUser 実装したUserInterface 
{ 
    / * * 
     * @purpose:表示
     *ミックス@return 
     * / 
    パブリック 関数showAd()
    {
        エコー "化粧品" ; 
    } 

    / * * 
     * @purpose:ディスプレイカテゴリ
     *ミックス@return 
     * / 
    パブリック 関数showCatetory()
    { 
        エコー "衣類分類" ; 
    } 
} 

IF$ _GET [ 'MALE' ]){
     $ユーザー = 新しい新しいMaleUser(); 
} {
     $ユーザ = 新しい新FemaleUser(); 
} 
$のユーザー - > showAd();   // ユーザーの性別に応じてその広告コンテンツが表示されます

4.まとめ

全体的に、開発中の当社の設計原理は次のように:

  • 独立したそれらを置く、アプリケーションは場所の変更が必要な場合があります検索、およびコードにそのミックスを変更する必要はありません。
  • プログラミングのためではなく、プログラミングを実現するためのインタフェース。
  • 多目的組み合わせ、あまり継承。

この記事では再現した場合に、カンガルーの学習をまとめたソース明記してください:https://www.cnblogs.com/chrdai/p/11184082.htmlを

おすすめ

転載: www.cnblogs.com/chrdai/p/11184082.html
おすすめ