返回 登录
0

Java设计模式之策略模式

学习Java的同学注意了!!!
学习过程中遇到什么问题或者想获取学习资源的话,欢迎加入Java学习交流群,群号码:279558494 我们一起学Java!

策略模式——定义算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。
策略模式是说,针对一种计算,定义一系列的算法,由用户决定具体使用哪一个算法完成计算。

比如,提供一个计算银行存款利率的接口,对于不同的存款方式(活期、一年定期、两年定期),提供不同的算法实现类,由用户决定使用哪种存款方式来计算利率。如果银行计算利率的算法发生了变化(如又增加了三年定期、五年定期的算法),对于用户的使用不产生任何影响,因为用户使用的是统一的计算接口,也符合了针对接口编程,不针对实现编程的设计原则。

定义一个计算存款利率的接口:

public interface IRateCalculator {
public double calculate(double amount);
}

计算活期存款利率的实现类:

public class CurrentRateCalcalator implements IRateCalculator {
private double rate = 0.035;
/**
* 计算活期存款利率
*/
@Override
public double calculate(double amount) {
return amount * rate;
}
}

计算一年定期存款利率的实现类:

public class OneYearRateCalculator implements IRateCalculator {
private double rate = 0.0325;
/**
* 计算一年定期存款利率
*/
@Override
public double calculate(double amount) {
return amount * rate;
}
}

计算两年定期存款利率的实现类:

public class TwoYearRateCalculator implements IRateCalculator {
private double rate = 0.0375;
/**
* 计算两年定期存款利率
*/
@Override
public double calculate(double amount) {
return amount * rate;
}
}

测试类:

public class Test {
/**
* 策略模式——定义算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。
*
* 针对一种计算,定义一系列的算法,由用户决定具体使用哪一个算法完成计算。
* @param args
*/
public static void main(String[] args) {
//假设有100块钱的本金
double amount = 100;
double rate;
IRateCalculator rateCalculator;
//计算活期存款利率
rateCalculator = new CurrentRateCalcalator();
rate = rateCalculator.calculate(amount);
System.out.println(“活期存款利率为:” + rate);
//计算一年定期存款利率
rateCalculator = new OneYearRateCalculator();
rate = rateCalculator.calculate(amount);
System.out.println(“一年定期存款利率为:” + rate);
//计算两年定期存款利率
rateCalculator = new TwoYearRateCalculator();
rate = rateCalculator.calculate(amount);
System.out.println(“两年定期存款利率为:” + rate);
}
}

以上就是Java设计模式中的策略模式。

学习Java的同学注意了!!!
学习过程中遇到什么问题或者想获取学习资源的话,欢迎加入Java学习交流群,群号码:279558494 我们一起学Java!

评论