/**
* 关键:
* 策略简单工厂:根据传入的类型,加载相应的策略类
* 策略对象(抽象):定义了算法家族
* 具体实现对象:实现了策略对象
*
* 策略简单工厂与简单工厂对比:
* 策略简单工厂需要让客户端使用一个类:一个ContextStrategy(管理策略对象的类)
* 简单工厂需要让客户端使用两个类: 一个工厂类,一个定义类
* @author zbl
*
*/
//客户端
public class CalStrategyFactory {
public static void main(String[] args) {
ContextStrategyFactory mycontextFactory = new ContextStrategyFactory("1");
mycontextFactory.getResult();
}
}
//策略简单工厂
class ContextStrategyFactory{
private MyStrategy mystrategy;
public ContextStrategyFactory(String type){
switch (type) {
case "1":
mystrategy = new ConcreteMyStrategyA();
break;
case "2":
mystrategy = new ConcreteMyStrategyB();
break;
}
}
public void getResult(){
mystrategy.strategyInteface();
}
}
//算法的公共接口 (也可以是Inteface)
abstract class MyStrategy{
public abstract void strategyInteface();
}
//具体实现A
class ConcreteMyStrategyA extends MyStrategy{
@Override
public void strategyInteface() {
System.out.println("mya");
}
}
//具体实现B
class ConcreteMyStrategyB extends MyStrategy{
@Override
public void strategyInteface() {
System.out.println("myb");
}
}