【設計模式】策略模式

策略模式


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 }
相關文章
相關標籤/搜索