各种资料对设计模式定义说法不一,也没有人给出一个像课本一样的定义,但核心思想是一致的,本文对于各种模式的定义部分摘自《HEAD FIRST设计模式》,部分摘自网络,还有一部分为自己理解,对于各种模式的理解,如有不正确的,欢迎批评指正。
目录:
策略模式——定义算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。
策略模式是说,针对一种计算,定义一系列的算法,由用户决定具体使用哪一个算法完成计算。
比如,提供一个计算银行存款利率的接口,对于不同的存款方式(活期、一年定期、两年定期),提供不同的算法实现类,由用户决定使用哪种存款方式来计算利率。如果银行计算利率的算法发生了变化(如又增加了三年定期、五年定期的算法),对于用户的使用不产生任何影响,因为用户使用的是统一的计算接口,也符合了针对接口编程,不针对实现编程的设计原则。
定义一个计算存款利率的接口:
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开发中的21种设计模式,详解和例子,带书签的pdf格式,方便阅读!
学习Java设计模式的笔记,标注了其中重要的要点,如果有需要的小伙伴,自行下载哦
良葛格————JavaJDK5.0学良葛格————JavaJDK5.0学习笔记PDF.rar习笔记PDF.rar良葛格良葛格————JavaJDK5.0学习笔记PDF.rar————JavaJDK5.0学习笔记PDF.rar良葛格————JavaJDK5.0学习笔记PDF.rar良...
Java JDK 6学习笔记——ppt简体版.rar
Java JDK 6学习笔记——ppt简体版加课本代码
Java JDK 6学习笔记——ppt简体版
java设计模式的学习笔记,其中包含各种模式的代码实现
Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习...
良葛格的Java学习笔记~讲解得非常详细。JDK5.0的~是Java入门的不错选择。
图解java设计模式_学习笔记_java开发解压密码为twj123