2-1 策略与简单工厂结合

/**
 * 关键:
 * 策略简单工厂:根据传入的类型,加载相应的策略类
 * 策略对象(抽象):定义了算法家族
 * 具体实现对象:实现了策略对象
 * 
 * 策略简单工厂与简单工厂对比:
 * 策略简单工厂需要让客户端使用一个类:一个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");
    }
    
}

猜你喜欢

转载自blog.csdn.net/littlelittleguai/article/details/83995156
2-1