策略模式使用

下面我们来看一看策略模式的UNL类图

下图是一个典型的折扣系统 运用到了策略模式UML类图
策略模式使用_第1张图片

关键代码
Server端:
定义
abstract class PriceSuper{

public void abstract discountPrice();//方法
}
}

public class DiscountPrice extends PriceSuper{
@override
public void abstract discountPrice(){
… do something
}

}

//三个继承子类
public class DiscountPrice extends PriceSuper{
@override
public void discountPrice(){
… do something
}

}

public class ReturnPrice extends PriceSuper{
@override
public void discountPrice(){
… do something
}

}
public class CashPrice extends PriceSuper{
@override
public void discountPrice(){
… do something
}

}

class Context{
private PriceSuper priceSuper;

Context(String stratgery){
switch(stratgery){
case 1:priceSuper=new ReturnPrice (); break;
case 2: ….. //省略
case 3:…. //省略
}

}

public void CaculatePrice(int stratgery//参数代表使用那种折扣方法){

priceSuper.discountPrice();
}
}

//Client代码

class Client(){
String []stategy={1,2,3}; //可以定义数组
double total=0.0;
Content ct=new Context(stategy);
toatal=ct.CaculatePrice

}

//总结 只要在需求分析中听到不同的时间 应用不同的业务规则,就可以使用策略模式,

为了使程序更好的 扩展 下面 加入反射

showPrice.properties
1=DiscountPrice
2=ReturnPrice
3=CashPrice

具体的思路 使用propeties类 load到文件 根据客户端输入的参数 ,进行比较
关键代码
for(){
//进行迭代Property属性的Key
if(type.equals(Properties.get())){
priceSuper=Class.forName(Properties.getValue()).newInstance();//这样 当变化折扣的时候 只需要修改配置文件即可

break;
}
}
//因为没有开工具 所以是直接输入的,不懂的请留言

你可能感兴趣的:(策略模式使用)