首页 > 代码库 > 策略模式使用
策略模式使用
下面我们来看一看策略模式的UNL类图
下图是一个典型的折扣系统 运用到了策略模式UML类图
关键代码
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;
}
}
//因为没有开工具 所以是直接输入的,不懂的请留言
策略模式使用