戦略パターンは、クライアント オブジェクトとは独立して変更できるようにすることで、アルゴリズムや動作の動的な変更を可能にする設計パターンです。このパターンは、Context、Strategy、ConcreteStrategy のロールで構成されます。実際のケースでは、さまざまなアルゴリズムを使用して生徒の成績を計算するアプリケーションを作成するのに役立ちます。 Strategy パターンの利点には、柔軟性、分離性、拡張性、再利用性が含まれます。これは、システムにタスクを実行する複数の方法があり、アルゴリズムまたは動作を実行時に動的に変更する必要があり、クライアント コードとアルゴリズムまたは動作の特定の実装の結合を回避する必要がある状況に適しています。
戦略パターンは、アルゴリズムまたは動作をクライアント オブジェクトから独立して変更できるようにする設計パターンです。実行時に相互作用することができます。このパターンには柔軟性があり、クライアント コードを変更せずにアプリケーションの動作を動的に変更できます。
戦略パターンは通常、次の役割で構成されます:
生徒の成績を計算するためにさまざまなアルゴリズムを使用するアプリケーションを考えてみましょう。戦略パターンを使用して、この種の機能を実現できます。
// Context (上下文) public class StudentGradingContext { private GradingStrategy strategy; public StudentGradingContext(GradingStrategy strategy) { this.strategy = strategy; } public double calculateGrade(double score) { return strategy.calculateGrade(score); } } // Strategy (策略) public interface GradingStrategy { double calculateGrade(double score); } // ConcreteStrategy (具体策略) public class SimpleGradingStrategy implements GradingStrategy { @Override public double calculateGrade(double score) { return score; } } // ConcreteStrategy (具体策略) public class WeightedGradingStrategy implements GradingStrategy { private double weight; public WeightedGradingStrategy(double weight) { this.weight = weight; } @Override public double calculateGrade(double score) { return score * weight; } } // Client (客户端) public class Client { public static void main(String[] args) { StudentGradingContext context = new StudentGradingContext(new SimpleGradingStrategy()); double grade = context.calculateGrade(85.0); System.out.println("Grade: " + grade); context = new StudentGradingContext(new WeightedGradingStrategy(0.8)); grade = context.calculateGrade(90.0); System.out.println("Weighted Grade: " + grade); } }
出力:
Grade: 85.0 Weighted Grade: 72.0
使用シナリオ:
以上がJava 設計パターンの戦略パターンの詳細な研究の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。