1. 程式人生 > >策略模式之策略列舉

策略模式之策略列舉

在使用策略模式時,我們要建立相應的策略,然後根據不同的場景使用不同的策略,這是可以的,但畢竟那是一堆的策略類,使用起來程式碼的可讀性、擴充套件性也就一般,這種情況下我們可以使用策略模式的升級版---策略列舉來解決上邊的問題

列舉類:

public enum StrategyEnum {
    ADD("+") {
        @Override
        public int exec(int a, int b) {
            return a+b;
        }
    },
    SUB("-") {
        @Override
        public int exec(int a, int b) {
            return a-b;
        }
    },
    MUTI("*") {
        @Override
        public int exec(int a, int b) {
            return a*b;
        }
    };

    StrategyEnum(String value) {
        this.value = value;
    }

    private String value;

    public String getValue() {
        return value;
    }

    public void setValue(String value) {
        this.value = value;
    }

    public abstract int exec(int a, int b);
}

測試類:

public class StrategyEnumTest {
    public static void main(String[] args) {
        System.out.println( StrategyEnum.ADD.exec(2,4));
        System.out.println( StrategyEnum.SUB.exec(2,4));
        System.out.println( StrategyEnum.MUTI.exec(2,4));
    }
}

執行結果:

怎麼樣,這樣的一堆策略是不是看起來很清爽,程式碼的可讀性、可擴充套件性就高很多了

差點忘了,這個是從設計模式之禪這本書上溫習時看到的,雖然簡單,但是許多的簡單技巧拼湊起來,你的程式碼就會不一樣