戦略は、主に一連のアルゴリズムを定義し、これらのアルゴリズムを1つずつカプセル化するオブジェクトの動作パターンです。
たとえば、Stratrgyは広く使用されています。1つはライン曲線で、もう1つはブロック図(BAR)です。 。
ここでは、文字列の代替を例として取ります。ユーザーの要件に応じて、その変数を交換する方法がある場合があるため、可変文字の代替セットをいくつか準備する必要があります。
最初に、いくつかの一般的な変数と方法を定義するために、抽象クラスの補強材を作成します。
コードコピーは次のとおりです。
パブリックアブストラクトクラスreptemprule {
保護された文字列oldstring = "";
public void setoldString(String Oldstring){
this.oldstring = oldstring;
}
保護された文字列newstring = "";
public string getNewString(){
ニューストリングを返す;
}
パブリックアブストラクトvoid置換()スロー例外。
}
reptempruleには抽象的な方法要約があり、それは明確に継承する必要があります。この置換は、実際にそれを置き換える特定の方法です。
現在、2つのキャラクターの選択肢があります。
1.テキストのAAAをBBBに置き換えます。
2。テキストのAAAをCCCに置き換えます。
対応するクラスは、reptempruleneとreptempruletwoです。
コードコピーは次のとおりです。
パブリッククラスのreptempruleneはreptempruleを拡張します{
public void facty()スロー例外{
//置換ファーストはJDK1.4 NewString = OldString.ReplaceFirst( "aaa"、 "bbbb"の新機能です。
system.out.println( "これは1つを置き換えます");
}
}
コードコピーは次のとおりです。
パブリッククラスのreptempruletwoはreptempruleを拡張します{
public void facty()スロー例外{
newstring = oldstring.replaceFirst( "aaa"、 "ccc")
system.out.println( "これは2つの置き換えです");
}
}
ステップ2:クライアントに自由に選択する機能を提供するために、アルゴリズムソリューションクラスを確立する必要があります。
コードコピーは次のとおりです。
パブリッククラスのreptemprulesolve {
プライベート補強戦略。
public reptemprulesolve(reptempruleルール){
this.strategy = rule;
}
public string getNewContext(サイトサイト、String Oldstring){
return Strategy.Replace(Site、Oldstring);
}
public void changealgorithm(reptemprule newalgorithm){
戦略= newAlgorithm;
}
}
通話は次のとおりです。
コードコピーは次のとおりです。
パブリッククラステスト{
......
public void testReplace(){
//代替の最初のセットを使用してくださいReptempruleSolve solver = new Reptemprulesolve(new Reptemprulesimple());
solver.getNewContext(サイト、コンテキスト);
// solversの2番目のセットを使用= new Reptemprulesolve(new ReptemPruletwo());
solver.getNewContext(サイト、コンテキスト);
}
.....
}
操作中にアルゴリズムを自由に切り替えるという目標を達成しました。
実際、戦略全体の中心的な部分は、戦略モードを使用することで、ユーザーが変更する必要があるときに非常に小さくて高速になる可能性があります。
戦略と工場は比較的簡単で理解しやすく、実行時に自由に切り替えることができます。工場はオブジェクトの作成に焦点を当てています。
戦略は、次の機会に適しています。
1.ファイルをさまざまな形式で保存します。
2。異なるアルゴリズムでファイルを圧縮します。
3.異なるアルゴリズムで画像を傍受します。
4.同じデータの出力グラフは、曲線やブロック図バーなど、異なる形式の形式の形式です。