设计模式之策略模式(笔记)

策略模式:它定义了算法家族,分别封装起来,让他们之间可以相互替换,此模式让算法的变化,不会影响到使用算法的客户。 策略模式封装了变化,减少了各种算法类与使用算法类之间的耦合。 例如做一个商场收银软件,定义三种收费方式,正常收费,,打8折,满300送100.这三种收费方式实际上就是具体的三种策略方式。 首先定义一个抽象算法类CashSuper,定义支持所有算法的公共接口

CashSuper { (double money);}

接着定义三种具体的策略类,来继承CashSuper 正常收费类 CashNormal

{(double money) {return money;}}

打折收费类CashRebate

{private double moneyRebate=1;(String rebate){this.moneyRebate=Double.valueOf(moneyRebate);}(double money) {return money*moneyRebate;} }

返回收费类CashReturn

{private double moneyCondition=0;private double moneyReturn=0;public CashReturn(String moneyCondition,String moneyReturn){this.moneyCondition=Double.valueOf(moneyCondition) ;this.moneyReturn=Double.valueOf(moneyReturn);}(double money) {double result=money;if(money>=moneyCondition){result=money-Math.floor(money/moneyCondition)*moneyReturn;}return result;}}

定义一个CashContext类来配置,用来维护一个对CashSuper抽象类的应用

public class CashContext {private CashSuper cashSuper;(String type){switch (type) {case “正常收费”:CashNormal cNormal=new CashNormal();cashSuper=cNormal;break;case “打8折”:CashRebate cRebate=new CashRebate(“0.8”);cashSuper=cRebate;break;case “满300送100”:CashReturn cReturn=new CashReturn(“300″,”100”);cashSuper=cReturn;break;}}(double money){return cashSuper.acceptCash(money);}}

人生最大的错误是不断担心会犯错

设计模式之策略模式(笔记)

相关文章:

你感兴趣的文章:

标签云: