Java設計模式之策略模式

模式結構:

Context:環境類

Strategy:抽象策略類

ConcreteStrategy:具體策略類


UML圖:



例子代碼:



環境類:

public class Context {
    private Strategy strategy;

    public void setStrategy(Strategy strategy) {
        this.strategy = strategy;
    }

    public void algorithm(){
        strategy.algorithm();
    }
}


抽象策略類:

public interface Strategy {
    void algorithm();
}

具體策略類A:

public class ConcreteAlgorithmA implements Strategy {
    @Override
    public void algorithm() {
        System.out.println("使用策略A");
    }
}


具體策略類B:

public class ConcreteAlgorithmB implements Strategy {
    @Override
    public void algorithm() {
        System.out.println("使用策略B");
    }
}

客戶類:

public class Client {
    public static void main(String[] args) {
        //準備決策環境
        Context context = new Context();
        //實例化使用的策略
        Strategy strategy1 = new ConcreteAlgorithmA();
        Strategy strategy2 = new ConcreteAlgorithmB();
        //環境設置策略
        context.setStrategy(strategy1);
        context.algorithm();
        //根據不同策略輸出不同結果
        context.setStrategy(strategy2);
        context.algorithm();
    }
}

結果打印:


發佈了34 篇原創文章 · 獲贊 4 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章