大话设计模式java版本 第二章 策略模式
来源:互联网 发布:邓肯数据统计历史排名 编辑:程序博客网 时间:2024/06/04 01:05
package strategy;//嵌入策略public class CashContext { private Cash cs; public CashContext(Cash cs) { super(); this.cs = cs; } public double getResult(double money){ return cs.acceptCash(money); }}
package strategy;public interface Cash { public abstract double acceptCash(double money);}
package strategy;/* * 正常收费 */public class CashNormal implements Cash{ @Override public double acceptCash(double money) { return money; }}
package strategy;/* * 打折策略 */public class CashRebate implements Cash{ private double moneyRebate; public CashRebate() { super(); } public CashRebate(double moneyRebate) { super(); this.moneyRebate = moneyRebate; } public double getMoneyRebate() { return moneyRebate; } public void setMoneyRebate(double moneyRebate) { this.moneyRebate = moneyRebate; } @Override public double acceptCash(double money) { return money*moneyRebate; }}
package strategy;/* * 返利收费策略 */public class CashReturn implements Cash { private double moneyCondition; private double moneyReturn; public CashReturn() { super(); } public CashReturn(double moneyCondition, double moneyReturn) { super(); this.moneyCondition = moneyCondition; this.moneyReturn = moneyReturn; } public double getMoneyCondition() { return moneyCondition; } public void setMoneyCondition(double moneyCondition) { this.moneyCondition = moneyCondition; } public double getMoneyReturn() { return moneyReturn; } public void setMoneyReturn(double moneyReturn) { this.moneyReturn = moneyReturn; } @Override public double acceptCash(double money) { if(money>=moneyCondition){ return money-(int)(money/moneyCondition)*moneyReturn; } return money; }}
测试类:
package strategy;import java.util.Scanner;/* * 测试代码 */public class test { public static void main(String[] args) { CashContext cc=null; double moneyRebate=0; double money=0; Scanner sc= new Scanner(System.in); System.out.println("请输入折扣类型"); String type = sc.next(); switch (type) { case "正常收费": cc=new CashContext(new CashNormal()); break; case "打折": System.out.println("请输入打折比例"); moneyRebate=sc.nextDouble(); cc=new CashContext(new CashRebate(moneyRebate)); break; case "返利": cc=new CashContext(new CashReturn(500, 50)); break; } System.out.println("请输入金额"); money = sc.nextDouble(); System.out.println(cc.getResult(money)); }}
0 0
- 大话设计模式java版本 第二章 策略模式
- 大话设计模式 第二章:策略模式
- 大话设计模式-第二章 策略模式
- 大话设计模式 第二章 策略模式 C++实现
- 大话设计模式-Study-Tips-第二章-策略模式
- 【读书笔记】大话设计模式 第二章 策略模式
- 大话设计模式--java实现策略模式
- 大话设计师 第二章 策略模式
- 大话设计模式java版本 第六章 装饰模式
- 大话设计模式java版本 第七章 代理模式
- 大话设计模式-策略模式
- 大话设计模式-策略模式
- 大话设计模式:策略模式
- 大话设计模式-策略模式
- 大话设计模式-策略模式
- 大话设计模式-策略模式
- 大话设计模式-策略模式
- 大话设计模式-----策略模式
- addclass()和多类选择器结合使用提高代码规范
- MKMapView的Span和Region深入分析
- AndroidStudio 在Resolve Error窗体上Failed to import new Gradle projec
- 时间复杂度
- EasyUI修改DateBox和DateTimeBox的默认日期格式
- 大话设计模式java版本 第二章 策略模式
- 树——sum-root-to-leaf-numbers
- 旧网站(java版本)永久301跳转到新网站(asp.net版本)
- 【友盟V5.0】微信登陆后,返回的usid为空
- Word2007中怎样删除空白页 PDF空白页如何删除
- vim 配置(ma6174 + YCM)
- NYOJ 914 Yougth的最大化(贪心,二分)
- List (单链表17个函数讲解)
- Lock与synchronized 的区别