大话设计模式(java实现)
来源:互联网 发布:内外网切换软件下载 编辑:程序博客网 时间:2024/06/13 21:33
//策略模式
//它定义了算法家族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化,不会影响使用算法的用户。
abstract class CashSuper
{
public abstract double acceptCash(double money);
}
class CashNormal extends CashSuper
{
public double acceptCash(double money)
{
return money;
}
}
class CashRebate extends CashSuper
{
private double moneyRebate=0.0;
public void setRebate(double moneyRebate)
{
this.moneyRebate=moneyRebate;
}
public double acceptCash(double money)
{
return moneyRebate*money;
}
}
class CashReturn extends CashSuper
{
private double moneyCondition;
private double moneyReturn;
public void setReturn(double moneyCondition,double moneyReturn)
{
this.moneyCondition=moneyCondition;
this.moneyReturn=moneyReturn;
}
public double acceptCash(double money)
{
double result=money;
if(money>=moneyCondition)
{
result=money-(money/moneyCondition)*moneyReturn;
}
return result;
}
}
class CashFactory
{
public static CashSuper createCashAccept(char i)
{
CashSuper cs=null;
switch(i)
{
case '1':
{
cs=new CashNormal();
break;
}
case '2':
{
cs=new CashReturn();
break;
}
case '3':
{
cs=new CashRebate();
break;
}
}
return cs;
}
}
public class Demo02
{
public static void main(String argc[])
{
CashSuper cs1=CashFactory.createCashAccept('1');
double totalPrice=cs1.acceptCash(500.0);
System.out.println("totalPrice="+totalPrice);
}
}
//它定义了算法家族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化,不会影响使用算法的用户。
abstract class CashSuper
{
public abstract double acceptCash(double money);
}
class CashNormal extends CashSuper
{
public double acceptCash(double money)
{
return money;
}
}
class CashRebate extends CashSuper
{
private double moneyRebate=0.0;
public void setRebate(double moneyRebate)
{
this.moneyRebate=moneyRebate;
}
public double acceptCash(double money)
{
return moneyRebate*money;
}
}
class CashReturn extends CashSuper
{
private double moneyCondition;
private double moneyReturn;
public void setReturn(double moneyCondition,double moneyReturn)
{
this.moneyCondition=moneyCondition;
this.moneyReturn=moneyReturn;
}
public double acceptCash(double money)
{
double result=money;
if(money>=moneyCondition)
{
result=money-(money/moneyCondition)*moneyReturn;
}
return result;
}
}
class CashFactory
{
public static CashSuper createCashAccept(char i)
{
CashSuper cs=null;
switch(i)
{
case '1':
{
cs=new CashNormal();
break;
}
case '2':
{
cs=new CashReturn();
break;
}
case '3':
{
cs=new CashRebate();
break;
}
}
return cs;
}
}
public class Demo02
{
public static void main(String argc[])
{
CashSuper cs1=CashFactory.createCashAccept('1');
double totalPrice=cs1.acceptCash(500.0);
System.out.println("totalPrice="+totalPrice);
}
}
- 大话设计模式(java实现)
- 大话设计模式之状态模式(java版实现)
- 大话设计模式--java实现策略模式
- 《大话设计模式》读书笔记:策略模式+反射的Java实现
- 大话设计模式2 策略模式 的java代码实现
- 大话设计模式3 装饰模式 的java代码实现
- 大话设计模式4 代理模式 的java代码实现
- 《大话设计模式》读书笔记:策略模式+反射的Java实现
- 《大话设计模式》java实现之简单工厂模式
- 《大话设计模式》java实现之策略模式
- 《大话设计模式》java实现之装饰器模式
- 《大话设计模式》java实现之代理模式
- 《大话设计模式》java实现之工厂方法模式
- 《大话设计模式》java实现之原型模式
- 《大话设计模式》java实现之模版方法模式
- 《大话设计模式》java实现之外观模式
- 《大话设计模式》java实现之建造者模式
- 《大话设计模式》java实现之观察者模式
- C++ 内存池 -- C++ Memory Pool
- Qt-----进度条QProgressBar
- 腾讯的初试面试经历
- WCF WebSocketsService (HTML5 WebSocket)
- DCE和DTE区别
- 大话设计模式(java实现)
- 一年了,始终无法绕过的SCA
- poj1014 Dividing 动态规划 多重背包问题
- NSMutableURLRequest
- Spring JPA getJpaTemplate find 多个参数 的设置
- oracle物化视图的一般用法
- 第一天(基础·一)
- Syslinux的子目录设置
- 初学者怎么去提问?要注意提问的方法