/**
* 抽象策略类(注:这边是用抽象方法,也可以顶一个策略接口然后抽象类去实现它的策略方法)
* @author Administrator
*
*/
public abstract class AbstractStrategy {
public abstract void doSomething();
}
/**
* 具体的策略
* @author Administrator
*
*/
public class Strategy1 extends AbstractStrategy{
@Override
public void doSomething() {
System.out.println("Strategy1");
}
}
/**
* 具体的策略
* @author Administrator
*
*/
public class Strategy2 extends AbstractStrategy{
@Override
public void doSomething() {
System.out.println("Strategy2");
}
}
/**
* contxt调用具体策略的容器
* @author Administrator
*
*/
public class StrategyFactory {
public AbstractStrategy strategy;
//构造方法
public StrategyFactory(AbstractStrategy strategy){
this.strategy=strategy;
}
public void doSomething(){
strategy.doSomething();
}
}
/**
* 测试类
* @author Administrator
*
*/
public class StrategyMainTest {
public static void main(String[] args) {
StrategyFactory factory1 = new StrategyFactory(new Strategy1());
factory1.doSomething();
StrategyFactory factory2 = new StrategyFactory(new Strategy2());
factory2.doSomething();
}
}