策略模式浅析
public interface BaseStrategy {
int totalPrice = 0;
/**
* 测试策略模式
*/
void test();
}
public class StrategyA implements BaseStrategy {
/**
* 测试A
*/
public void test() {
System.out.println("策略A");
}
}
public class StrategyB implements BaseStrategy{
/**
* 测试B
*/
public void test() {
System.out.println("策略B");
}
}
public class StrategyC implements BaseStrategy{
/**
* 测试C
*/
public void test() {
System.out.println("策略C");
}
}
/**
* 总领全局
*/
public class StrategyContent {
/**
* 引子
*/
private BaseStrategy baseStrategy;
/**
* 巧用构造函数,关联具体策略
*/
public StrategyContent(int type){
switch (type){
case 1:
baseStrategy=new StrategyA();
break;
case 2:
baseStrategy=new StrategyB();
break;
case 3:
baseStrategy=new StrategyC();
break;
default:
break;
}
}
/**
* 总领调度
*/
public void testStrategy(){
baseStrategy.test();
}
}
public class OriginStrategy {
/**
* 基础策略模式
*/
BaseStrategy baseStrategy;
/**
* 初始化
* @param baseStrategy
*/
OriginStrategy(BaseStrategy baseStrategy){
this.baseStrategy=baseStrategy;
}
/**
* 策略调用
*/
public void test(){
this.baseStrategy.test();
}
}
public class TestStrategyContentMain {
/**
* 业务调用方
* @param args
*/
public static void main(String[] args) {
OriginStrategy originStrategy;
switch (1){
case 1:
originStrategy=new OriginStrategy(new StrategyA());
break;
case 2:
originStrategy=new OriginStrategy(new StrategyB());
break;
case 3:
originStrategy=new OriginStrategy(new StrategyC());
break;
default:
throw new IllegalStateException("Unexpected value: " + 1);
}
originStrategy.test();
}
}
评论