策略模式

策略模式對應於解決某一個問題的算法族,允許用戶從該算法族任選一個算法解決某一問題,同時可以方便地更換算法和增加新的算法。並且由客戶端決定調用哪個算法。常用場景,Spring框架Resource接口,資源訪問策略。
現在有一個應用場景,一個服裝廠的老闆對他的客戶根據情況進行不同的折扣,採用策略模式。

首先是策略接口

public interface Strategy {

    double getPrice(double standardPrice);
}

然後是屬於策略1的客戶,原價,不打折。

public class Strategy1 implements Strategy {
    @Override
    public double getPrice(double standardPrice) {
        System.out.println("原價");
        return standardPrice;
    }
}

策略二的客戶,打九折。

public class Strategy2 implements Strategy {
    @Override
    public double getPrice(double standardPrice) {
        System.out.println("打九折");
        return standardPrice * 0.9;
    }
}

策略三的客戶,打八折。

public class Strategy3 implements Strategy {
    @Override
    public double getPrice(double standardPrice) {
        System.out.println("八折");
        return standardPrice * 0.8;
    }
}

然後是一個上下文類,持有策略類實例。

public class Context {
    private Strategy strategy;

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

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

    public void printPrice(double s){
        System.out.println(strategy.getPrice(s));
    }
}

最後是測試類。

public class Test {

    public static void main(String[] args) {
        Context context = new Context(new Strategy2());
        context.printPrice(443);

    }
}

最後的打印結果:
打九折
398.7

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