码迷,mamicode.com
首页 > 其他好文 > 详细

第二章 策略模式

时间:2016-03-30 01:29:42      阅读:129      评论:0      收藏:0      [点我收藏+]

标签:

策略模式封装了变化。

标准策略模式:

 

/**
 * Created by hero on 16-3-29.
 */
public abstract class CashSuper {
    public abstract double acceptCash(double money);
}
/**
 * Created by hero on 16-3-29.
 */
public class CashNormal extends CashSuper{
    @Override
    public double acceptCash(double money) {
        return money;
    }
}
/**
 * Created by hero on 16-3-29.
 */
public class CashRebate extends CashSuper {
    private double moneyRebate = 1d;

    public double getMoneyRebate() {
        return moneyRebate;
    }

    public void setMoneyRebate(double moneyRebate) {
        if (moneyRebate < 0) {
            throw new IllegalArgumentException("what‘s wrong with this supermarket?!!!");
        }
        this.moneyRebate = moneyRebate;
    }

    public CashRebate(double moneyRebate) {
        this.setMoneyRebate(moneyRebate);
    }

    @Override
    public double acceptCash(double money) {
        return getMoneyRebate() * money;
    }
}
/**
 * Created by hero on 16-3-29.
 */
public class CashContext {
    private CashSuper cashSuper = null;

    public CashContext(CashSuper cashSuper) {
        this.cashSuper = cashSuper;
    }

    public double getResult(double money) {
        return cashSuper.acceptCash(money);
    }
}
public class Main {

    public static void main(String[] args) {
        CashContext cashContext = null;
        cashContext = new CashContext(new CashNormal());
        System.out.println(cashContext.getResult(12));
        cashContext = new CashContext(new CashRebate(0.3));
        System.out.println(cashContext.getResult(12));
    }
}

 

策略与简单工厂结合:

简单工厂模式对类似“满300减200、满400减100”的变化进行有效封装,除非另外制定一套规则比如:“满减-400,100、满减-500,100”,在swich语句中只取‘-’之前的作case条件,其后跟参数,多个参数以

‘,’分割。

策略与简单工厂的结合使后端对前端的暴露降低了。算是集成了二者的优点吧。

第二章 策略模式

标签:

原文地址:http://www.cnblogs.com/littlehoom/p/5335471.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!