1. 程式人生 > 實用技巧 >策略模式(行為型)

策略模式(行為型)

設計模式的3個分類:建立型模式、結構型模式、行為型模式

策略模式定義:

策略模式定義了演算法族,分別封裝起來,讓它們之間可以互相替換,此模式讓演算法的變化獨立於使用演算法的客戶。

策略模式圖示:

程式碼實現:

//定義策略介面
public interface Strategy {

    int operation(int num1, int num2);
}

public class ConcreteStrategyA implements Strategy{

    @Override
    public int operation(int num1, int num2) {
        return num1 + num2;
    }
}

public class ConcreteStrategyB implements Strategy{

    @Override
    public int operation(int num1, int num2) {
        return num1 * num2;
    }
}

public class Context {

    private Strategy strategy;

    public Context(Strategy strategy) {
        this.strategy = strategy;
    }

    public int executeOperation(int num1, int num2) {
        return strategy.operation(num1, num2);
    }
}

//Test
public class StrategyPatternDemo {

    public static void main(String[] args) {

        int num1 = 5;
        int num2 = 10;

        Strategy strategy = new ConcreteStrategyA();
        Context context = new Context(strategy);
        int result = context.executeOperation(num1, num2);
        System.out.println("result = " + result);//result = 15

        strategy = new ConcreteStrategyB();
        context = new Context(strategy);
        result = context.executeOperation(num1, num2);
        System.out.println("result = " + result);//result = 50

    }
}

思考:

策略模式還是很常見的,像一個專案招標,在明確了需求之後,投標方會根據需求進行專案的模擬實現。招標單位集中所有的投標資料,分別進行對比,最終確定最合適的方案。

《三十六計》由兩大類,然後分出六套,再細化到36個具體計策。

優勢:勝戰計、敵戰計、攻戰計(3大類再擴展出:瞞天過海、以逸待勞等)

劣勢:混戰計、並戰計、敗戰計(3大類再擴展出:空城計、苦肉計等)

當兩軍交戰時,決策者可以根據敵我雙方實際情況判斷己方是處於優勢還是劣勢,靈活的使用具體的計策。

--End