漫畫:星球入侵之策略模式

比基盜星球還有2萬公里將要到達我星球入侵。。。

 

此時的why星球

 

 

 

public class SimpleHero {

    public void fight (String condition) {
        if (condition == null ) {
            return;
        }
        if ("AgainstTheWind".equals(condition)) {
            System.out.println("逆風翻盤策略");

        } else if ("DownwindSuppression".equals(condition)) {
            System.out.println("順風壓制策略");

        } else if ("BalanceInPower".equals(condition)) {
            System.out.println("勢均力敵策略");

        }
    }

    public static void main(String[] args) {
        SimpleHero simpleHero = new SimpleHero();
        simpleHero.fight("AgainstTheWind");
    }
}

 

 

 

策略模式:定義一些算法族,分別封裝,讓他們可以相互替換,此模式讓算法的變化獨立於使用算法的客戶。該設計模式屬於行爲型模式。

 

策略模式UML圖:

 

public interface Strategy {

    public void fight();
}

public class AgainstTheWindStrategy implements Strategy {

    @Override
    public void fight() {
        System.out.println("逆風翻盤策略");
    }
}


public class BalanceInPowerStrategy implements Strategy {

    @Override
    public void fight() {
        System.out.println("勢均力敵策略");
    }
}


public class DownwindSuppressionStrategy implements Strategy {

    @Override
    public void fight() {
        System.out.println("順風壓制策略");
    }
}


public class Hero {

    private Strategy strategy;

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

    public void useStrategem() {
        strategy.fight();
    }

}


public class Battlegroud {

    public static void main(String[] args) {
        Hero hero = new Hero(new AgainstTheWindStrategy());
        hero.useStrategem();

        Hero hero1 = new Hero(new BalanceInPowerStrategy());
        hero1.useStrategem();

        Hero hero2 = new Hero(new DownwindSuppressionStrategy());
        hero2.useStrategem();

    }
}

 

tips :

策略模式優點:滿足開閉原則,當新增策略時,只需要新增策略實現類,方便擴展,避免大量的if..else。

策略模式缺點:客戶端需要知道所有的策略實現類,如果策略比較多的時候,類的數量也會比較多。

當然策略模式的應用不止是舉慄的這些,如果大家希望看些源碼解析的文章,後面給大家安排上,歡迎大家來看我文章,希望大家喜歡,更多精彩關注<Java小咖秀>。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章