ホームページ >よくある問題 >戦略パターンとは何ですか?

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

Guanhui
Guanhuiオリジナル
2020-06-28 16:50:484315ブラウズ

ソフトウェア設計パターンとして、戦略パターンは、オブジェクトが特定の動作をすることを意味しますが、異なるシナリオでは、その動作は異なる実装アルゴリズムを持ちます。このパターンは、複数の類似したアルゴリズムの問​​題を解決します。以下、複雑さ「if...else」の使用によるメンテナンスの難しさ。

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

はじめに

目的: 一連のアルゴリズムを定義し、それらを 1 つずつカプセル化し、アクセスできるようにするお互い。

主な解決策: 類似したアルゴリズムが複数ある場合、if...else を使用すると複雑さが増し、メンテナンスが困難になります。

いつ使用するか: システムには非常に多くのクラスがあり、それらを区別するのはその直接の動作です。

解決方法: これらのアルゴリズムを 1 つずつクラスにカプセル化し、任意に置き換えます。

主要なコード: 同じインターフェイスを実装します。

応用例: 1. 諸葛孔明のヒント、それぞれのヒントは戦略です。 2. 移動方法は自転車か車か、それぞれの移動方法に戦略があります。 3. JAVA AWT の LayoutManager。

利点: 1. アルゴリズムを自由に切り替えることができます。 2. 複数の条件判断を使用しないでください。 3. 優れた拡張性。

デメリット: 1. 戦略のカテゴリが増加します。 2. すべての戦略クラスを外部世界に公開する必要があります。

使用シナリオ: 1. システム内に多数のクラスがあり、クラス間の違いがその動作のみである場合、戦略パターンを使用して、オブジェクトに多数の動作の中から 1 つの動作を動的に選択させることができます。 2. システムは、いくつかのアルゴリズムから 1 つを動的に選択する必要があります。 3. オブジェクトに多くの動作があり、適切なパターンがない場合は、複数の条件付き選択ステートメントを使用してこれらの動作を実装する必要があります。

注: システムに 4 つを超える戦略がある場合は、ポリシー クラスの拡張の問題を解決するために混合モードの使用を検討する必要があります。

実装

アクティビティを定義する Strategy インターフェイスと、Strategy インターフェイスを実装するエンティティ Strategy クラスを作成します。コンテキストは、特定の戦略を使用するクラスです。

StrategyPatternDemo デモ クラスは、Context オブジェクトと戦略オブジェクトを使用して、構成または使用される戦略が変更されたときの Context の動作の変化を示します。

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

推奨チュートリアル: 「PHP

以上が戦略パターンとは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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