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