程序员人生 网站导航

Java 下各种设计模式小结

栏目:互联网时间:2014-10-11 08:00:00

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

 

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

 

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

Java代码  收藏代码
  1. public interface IRateCalculator {  
  2.     public double calculate(double amount);  
  3. }  

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

Java代码  收藏代码
  1. public class CurrentRateCalcalator implements IRateCalculator {  
  2.   
  3.     private double rate = 0.035;  
  4.       
  5.     /** 
  6.      * 计算活期存款利率 
  7.      */  
  8.     @Override  
  9.     public double calculate(double amount) {  
  10.         return amount * rate;  
  11.     }  
  12. }  

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

Java代码  收藏代码
  1. public class OneYearRateCalculator implements IRateCalculator {  
  2.       
  3.     private double rate = 0.0325;  
  4.       
  5.     /** 
  6.      * 计算一年定期存款利率 
  7.      */  
  8.     @Override  
  9.     public double calculate(double amount) {  
  10.         return amount * rate;  
  11.     }  
  12. }  

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

Java代码  收藏代码
  1. public class TwoYearRateCalculator implements IRateCalculator {  
  2.   
  3.     private double rate = 0.0375;  
  4.       
  5.     /** 
  6.      * 计算两年定期存款利率 
  7.      */  
  8.     @Override  
  9.     public double calculate(double amount) {  
  10.         return amount * rate;  
  11.     }  
  12. }  

 

测试类:

Java代码  收藏代码
  1. public class Test {  
  2.     /** 
  3.      * 策略模式――定义算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。 
  4.      *  
  5.      * 针对一种计算,定义一系列的算法,由用户决定具体使用哪一个算法完成计算。 
  6.      * @param args 
  7.      */  
  8.     public static void main(String[] args) {  
  9.         //假设有100块钱的本金  
  10.         double amount = 100;  
  11.         double rate;  
  12.         IRateCalculator rateCalculator;  
  13.           
  14.         //计算活期存款利率  
  15.         rateCalculator = new CurrentRateCalcalator();  
  16.         rate = rateCalculator.calculate(amount);  
  17.         System.out.println("活期存款利率为:" + rate);  
  18.           
  19.         //计算一年定期存款利率  
  20.         rateCalculator = new OneYearRateCalculator();  
  21.         rate = rateCalculator.calculate(amount);  
  22.         System.out.println("一年定期存款利率为:" + rate);  
  23.           
  24.         //计算两年定期存款利率  
  25.         rateCalculator = new TwoYearRateCalculator();  
  26.         rate = rateCalculator.calculate(amount);  
  27.         System.out.println("两年定期存款利率为:" + rate);  
  28.     }  
------分隔线----------------------------
------分隔线----------------------------

最新技术推荐