JavaのStrategyパターンをどのように使用する

ストラテジパターンを Java で利用するには、まず戦略の抽象を表現するインターフェースを定義します。続いて、さまざまな具体的な戦略に対応して、そのインターフェースを実装する複数の実装クラスを作成します。最後に、戦略を使用する箇所で、異なる具体的な戦略オブジェクトを渡すことで、異なる振る舞いを達成します。

以下に簡単な例を示します。

まず、ポリシーインターフェースを定義します。

public interface Strategy {
void execute();
}

次に、個々の具体的な戦略クラスを実現します。

public class StrategyA implements Strategy {
@Override
public void execute() {
System.out.println("执行策略A");
}
}
public class StrategyB implements Strategy {
@Override
public void execute() {
System.out.println("执行策略B");
}
}
public class StrategyC implements Strategy {
@Override
public void execute() {
System.out.println("执行策略C");
}
}

最後にポリシーを使用する場所では、異なる具体的なポリシーオブジェクトを渡すことで、異なる振る舞いを達成できます:

public class Context {
private Strategy strategy;
public void setStrategy(Strategy strategy) {
this.strategy = strategy;
}
public void executeStrategy() {
strategy.execute();
}
}
public class Main {
public static void main(String[] args) {
Context context = new Context();
// 设置策略A并执行
context.setStrategy(new StrategyA());
context.executeStrategy(); // 输出:执行策略A
// 设置策略B并执行
context.setStrategy(new StrategyB());
context.executeStrategy(); // 输出:执行策略B
// 设置策略C并执行
context.setStrategy(new StrategyC());
context.executeStrategy(); // 输出:执行策略C
}
}

上記の例からもわかるように、戦略パターンは、インターフェースと、それを実装する複数のクラスを定義し、それぞれ異なる処理が可能で、具体的な戦略オブジェクトを渡すことにより、異なる戦略を利用することができる。

bannerAds