Java23デザインパターン-14。行動パターンの戦略パターン

Javaの設計原則に加えて、23の設計パターンもあります。

これらのパターンは前任者によって少しずつ蓄積され、改善され、最適化されており、これらのデザインパターンはいくつかの特定の問題を解決することができます。

そして、これらのモードでは、言語の使用が完全に反映されていると言えます。

それでは  、今日は  行動モデルの戦略モデルを学びましょう    !

戦略モード

戦略モードとは何かを見てみましょう

Baidu Encyclopediaによるこのモードの導入はまだ可能ですが、よくわかりません。栗をあげましょう。

たとえば、A市に行く予定ですが、そこに行くにはさまざまな方法があります。自分で運転したり、電車や車に乗ったり、飛行機に乗ったりすることもできます。

上記の問題と同様に、条件文を使用する場合、多くのことを書く必要があるだけでなく、アルゴリズムを追加、削除、または置換するだけでなく、元のコードを変更する必要があります。これは、保守が容易ではなく、オープンとクローズに違反します。原則ですが、戦略モードを採用すれば、この問題は非常にうまく解決できます。

戦略モデルの定義と特徴

ストラテジーモードの定義:このモードは、一連のアルゴリズムを定義し、各アルゴリズムをカプセル化して、それらを相互に置き換えることができるようにします。アルゴリズムの変更は、アルゴリズムを使用する顧客に影響を与えません。

このモデルの利点:

1.複数の条件ステートメントを維持するのは簡単ではなく、戦略モードを使用すると、複数の条件ステートメントの使用を回避できます。

2.ストラテジーモードは、一連の再利用可能なアルゴリズムファミリを提供します。継承を適切に使用すると、アルゴリズムファミリの共通コードを親クラスに転送できるため、コードの重複を回避できます。

3.戦略モードは、同じ動作のさまざまな実現を提供でき、顧客はさまざまな時間またはスペースの要件に応じてさまざまな実現を選択できます。

4.ストラテジーモードは、開始と終了の原則を完全にサポートし、元のコードを変更せずに新しいアルゴリズムを柔軟に追加できます。

5.ストラテジーモードでは、アルゴリズムの使用が環境クラスに配置され、アルゴリズムの実現が特定のストラテジークラスに移動され、2つの分離が実現されます。


主なデメリットは次のとおりです。

1.クライアントは、適切なアルゴリズムクラスを時間内に選択するために、すべての戦略アルゴリズムの違いを理解する必要があります。

2.ストラテジーモードは、多くのストラテジークラスを作成します。

戦略パターンの構造と実現

戦略モードには3つの主な役割があります

1.抽象戦略クラス:パブリックインターフェイスを定義し、さまざまなアルゴリズムがこのインターフェイスをさまざまな方法で実装します。環境ロールは、このインターフェイスを使用して、通常はインターフェイスまたは抽象クラスを使用してさまざまなアルゴリズムを呼び出します。

2.特定の戦略クラス:抽象戦略によって定義されたインターフェースを実装し、特定のアルゴリズムの実装を提供します。

3.環境クラス:戦略クラスへの参照を保持し、最終的にクライアントによって呼び出されます。

 

それを知った後、上記の例を実装して、都市Aに行きましょう

最初の一歩:

まず、この抽象戦略クラスを定義します

とても簡単です。都市Aに行く方法を定義する必要があります。

2番目のステップ:

2番目のステップでは、特定の戦略実装クラスを定義する必要があります。ここでは、2つの実装クラスを定義します。1つは飛行機に乗ることで、もう1つは電車に乗ることです。

3番目のステップ:

これだけでは不十分です。環境クラスも使用する必要があります。カプセル化する場所に移動する方法は次のとおりです。お客様は移動方法を選択できます。

テスト:

最後のステップ、それをテストしましょう、私たちは観光客のようです、私たちは飛行機で行くことを選ばなければなりません

次に実行します

はい、飛行機で行きました、または電車を選ぶことができます

同様に、OKです。将来的には都市Aに行く方法を作成するだけでよく、他の場所でコードを変更する必要はありません。

 

OK、それだけです、みんなよく見てください。たくさん練習してください。ご不明な点がございましたら、お問い合わせくださいQQ:2100363119

私の個人的なウェブサイトを訪問するために皆を歓迎します:lemon1234.comメッセージを残してくれてありがとう

おすすめ

転載: blog.csdn.net/weixin_45908370/article/details/109328505