1. 程式人生 > >2-1 策略與簡單工廠結合

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");
    }
    
}