简单工厂模式:将对象交由工厂来生成。
策略模式:
主要与算法有关。
定义了算法家族,分别封装起来,让它们直接可以相互替换,此模式让算法的变化,不会影响到使用算法的客户。
与简单工厂模式相结合,只要在分析过程中听到需要在不同的时间应用不同的业务规则,就可以考虑策略模式处理这种问题。
比如下面代码为这两种方式的不同:
简单工厂模式:
CashSuper csuper = CashFactory.createrCashAccept(cbxType.SelectItem.ToString());
…=csuper.GetResult(…)
策略模式与简单工厂结合的用法:
CashContext csuper = new CashContext(cbxType.SelectedItem.ToString());
… = csuper.GetResult(…)
简单工厂模式暴露了CashSuper和CashFactory。而策略模式只暴露了CashContext
策略模式代码示例:
public abstract class Strategy {
/**
* 算法策略
* @return
* */
public abstract void calculate();
}
public class ConcreteStrategyA extends Strategy {
@Override
public void calculate() {
// TODO Auto-generated method stub
System.out.println("算法A实现");
}
}
public class ConcreteStrategyB extends Strategy {
@Override
public void calculate() {
// TODO Auto-generated method stub
System.out.println("算法B实现");
}
}
public class CashContext {
private Strategy st;
public CashContext(String type) throws Exception{
switch(type){
case "策略A":
st = new ConcreteStrategyA();
break;
case "策略B":
st = new ConcreteStrategyB();
break;
default:
throw new Exception("未知的策略");
}
}
public void getResult(){
st.calculate();
}
}
public class test {
public static void main(String[] args) throws Exception {
CashContext cont = new CashContext("策略A");
cont.getResult();
}
}