2019-11-10 17:45:09 by沖沖算法
策略模式(Strategy Pattern),建立多個不一樣的策略對象(實現同一個策略接口)和一個使用策略(將策略對象註冊爲屬性成員)的context對象。ide
本質:設計多個算法方案(它們實現同一個接口,具有可擴展性)。this
解決:取代if-else結構。spa
1 //算法標準 2 interface Calculate { 3 public int calculate(int a, int b);//操做數,被操做數 4 } 5 6 //實現算法標準的加法 7 class Addition implements Calculate{/ 8 @Override 9 public int calculate(int a, int b) {//加數與被加數 10 return a + b;//這裏咱們作加法運算 11 } 12 } 13 14 //實現算法標準的減法 15 class Subtraction implements Calculate{//實現算法接口 16 @Override 17 public int calculate(int a, int b) {//減數與被減數 18 return a - b;//這裏咱們作減法運算 19 } 20 } 21 22 //使用算法標準實現類的context類 23 class Calculator {//計算器類 24 private Calculate calculate;//擁有某種算法策 25 public void setCalculator(Calculate calculate) {//接入算法策略 26 this.calculate = calculate; 27 } 28 public int getResult(int a, int b){ 29 return this.calculate.calculate(a, b);//返回具體策略的結果 30 } 31 } 32 33 public class Strategy { 34 public static void main(String[] args) { 35 Calculator calculator = new Calculator();//實例化計算器 36 37 calculator.setCalculator(new Addition());//接入加法實現 38 int result = calculator.getResult(1, 1);//計算 39 System.out.println(result);//獲得的是加法結果2 40 41 calculator.setCalculator(new Subtraction());//接入減法實現 42 result = calculator.getResult(1, 1);//計算 43 System.out.println(result);//獲得的是減法結果0 44 45 } 46 }