举报投诉联系我们 手机版 热门标签 编程学
您的位置:编程学 > java策略模式例子 Java 策略模式

java策略模式例子 Java 策略模式

2023-05-03 02:18 Java教程

java策略模式例子 Java 策略模式

java策略模式例子

Java策略模式是一种行为设计模式,它允许程序在运行时动态地选择不同的算法来实现特定的功能。它可以帮助我们将复杂的业务逻辑分解成一系列可重用的策略,从而使代码更易于理解和扩展。

下面是一个关于 Java 策略模式的例子:假设我们有一个电影院应用,它可以根据用户的年龄来决定电影的价格。

public interface PriceStrategy { 
    double getPrice(int age); 
} 
 
public class ChildPriceStrategy implements PriceStrategy { 

    @Override 
    public double getPrice(int age) { 
        if (age < 12) { 
            return 5.0; 
        } else { 
            return 10.0; 
        } 

    } 

 }  

 public class AdultPriceStrategy implements PriceStrategy {  

    @Override  
    public double getPrice(int age) {  

        if (age >= 18) {  

            return 15.0;  

        } else {  

            return 10.0;  

        }  

    }  

 }  

 public class MovieTicket {  

    private int age; // 电影票买家年龄  

    private PriceStrategy priceStrategy; // 电影票价格策略对象  

     public MovieTicket(int age) {  

        this.age = age; // 根据买家年龄初始化电影票对象时,同时初始化相应的价格策略对象  

        if (age < 12) { // 如果买家年龄小于12岁,则使用儿童价格策略对象  

            priceStrategy = new ChildPriceStrategy();    													                                                                                                                                                             ) ;     // 如果买家年龄大于18岁,则使用成人价格策略对象     else     priceStrategy = new AdultPriceStrategy();     }      public double getPrice() {      return priceStrategy.getPrice(age);     }} 

Java 策略模式

 Java设计模式 - 战略模式


在策略模式中,可以在运行时更改算法。

策略模式是一种行为模式。

在策略模式中,我们创建表示各种算法的对象和运行算法的上下文对象。

策略对象更改上下文对象上的算法。

例子

interface MathAlgorithm {
   public int calculate(int num1, int num2);
}
class MathAdd implements MathAlgorithm{
   @Override
   public int calculate(int num1, int num2) {
      return num1 + num2;
   }
}
class MathSubstract implements MathAlgorithm{
   @Override
   public int calculate(int num1, int num2) {
      return num1 - num2;
   }
}
class MathMultiply implements MathAlgorithm{
   @Override
   public int calculate(int num1, int num2) {
      return num1 * num2;
   }
}
class MathContext {
   private MathAlgorithm algorithm;

   public MathContext(MathAlgorithm strategy){
      this.algorithm = strategy;
   }

   public int execute(int num1, int num2){
      return algorithm.calculate(num1, num2);
   }
}
public class Main {
   public static void main(String[] args) {
      MathContext context = new MathContext(new MathAdd());    
      System.out.println("10 + 5 = " + context.execute(10, 5));

      context = new MathContext(new MathSubstract());    
      System.out.println("10 - 5 = " + context.execute(10, 5));

      context = new MathContext(new MathMultiply());    
      System.out.println("10 * 5 = " + context.execute(10, 5));
   }
}

上面的代码生成以下结果。

阅读全文
以上是编程学为你收集整理的java策略模式例子 Java 策略模式全部内容。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
相关文章
© 2024 编程学 bianchengxue.com 版权所有 联系我们
桂ICP备19012293号-7 返回底部