大话设计模式2 策略模式 的java代码实现
2014-08-09 13:36
691 查看
现金收费接口
正常收费子类
打折收费子类
返利收费子类 比如满300 反 100
Context类
客户端类
//现金收费接口 interface CashSuper { public double acceptCash(double money); }
正常收费子类
//正常收费子类 public class CashNormal implements CashSuper { @Override public double acceptCash(double money) { return money; } }
打折收费子类
//打折收费子类 public class CashRebate implements CashSuper { private double moneyRebate=0; public CashRebate(double moneyRebate) { this.moneyRebate = moneyRebate; } @Override public double acceptCash(double money) { return money*moneyRebate; } }
返利收费子类 比如满300 反 100
//返利收费子类 比如满300 反 100 public class CashReturn implements CashSuper { private double moneyCondition=0; private double moneyReturn=0; public CashReturn(double moneyCondition, double moneyReturn) { this.moneyCondition = moneyCondition; this.moneyReturn = moneyReturn; } @Override public double acceptCash(double money) { double result=money; if(money>=moneyCondition){ result=money-Math.floor(money/moneyCondition)*moneyReturn; } return result; } }
Context类
//Context类 public class CashContext { CashSuper cs = null; public CashContext(String type) { String[] arr = new String[] { "正常收费", "满300返100", "打8折" }; int n = 0; for (int i = 0; i < arr.length; i++) { if (arr[i].equals(type)) { n = i; } } switch (n) { case 0: cs = new CashNormal(); break; case 1: cs =new CashReturn(300, 100); break; case 2: cs=new CashRebate(0.8); } } public double getResult(double money){ return cs.acceptCash(money); } }
客户端类
//客户端类 public class Test { public static void main(String[] args) { //CashContext context=new CashContext("正常收费"); //CashContext context=new CashContext("满300返100"); CashContext context=new CashContext("打8折"); double price=100; int num=10; double money=price*num; double lastMoney=context.getResult(money); System.out.println(lastMoney); } }
相关文章推荐
- 大话设计模式3 装饰模式 的java代码实现
- 大话设计模式4 代理模式 的java代码实现
- 《大话设计模式》读书笔记(C++代码实现) 第二章:策略模式
- 大话设计模式--java实现策略模式
- 大话设计模式1 简单工厂模式 的java代码实现
- 《大话设计模式》读书笔记:策略模式+反射的Java实现
- 《大话设计模式》读书笔记:策略模式+反射的Java实现
- 《大话设计模式》java实现之策略模式
- 《大话设计模式》读书笔记(C++代码实现) 第二章:策略模式
- 设计模式之迭代器模式java实现代码
- java 策略模式,list集合,实现id 姓名年龄正序倒序排序(如果年龄或者姓名重复,按id正序排序)
- 大话设计模式中简单工厂模式和策略模式的商场收银软件实例的C++代码
- 设计模式之迭代器模式java实现代码
- 《大话设计模式》读书笔记(C++代码实现) 第六章:装饰模式
- 大话设计模式之策略模式代码
- 设计模式:策略模式的实现 c++ 与 java
- Java设计模式之策略模式代码示例
- 《大话设计模式》读书笔记(C++代码实现) 第七章:代理模式
- 《大话设计模式》代码JAVA版-第6章 装饰模式
- 《大话设计模式》读书笔记(C++代码实现) 第六章:装饰模式