## 首先定義乙個介面:
package com.yecc.suanfa.strategy;
/** * created by yecc on 2020/11/16 19:35
*/public
inte***ce
strategy
## 定義三個繼承介面的類:
package com.yecc.suanfa.strategy;
/** * created by yecc on 2020/11/16 19:36
*/public
class
operationadd
implements
strategy
}
package com.yecc.suanfa.strategy;
/** * created by yecc on 2020/11/16 19:38
*/public
class
operationmultiply
implements
strategy
}
package com.yecc.suanfa.strategy;
/** * created by yecc on 2020/11/16 19:37
*/public
class
operationsubtract
implements
strategy
}
## 建立乙個context類:
context類主要是用來切換策略,實際上就是拿到三個繼承類的例項,這裡其實也可以不用這個類,當用反射拿到三個繼承類的例項的時候,用例項呼叫繼承介面中的方法,自然就會走到自己繼承實現的方法了。
package com.yecc.suanfa.strategy;
/** * created by yecc on 2020/11/16 19:38
*/public
class
context
public
intexecutestrategy
(int num1,
int num2)
}
## 測試:
package com.yecc.suanfa.strategy;
/** * created by yecc on 2020/11/16 19:40
*/public
class
strategypatterndemo
}
package com.yecc.suanfa.strategy.enums;
/** * created by yecc on 2020/11/26 16:58
*/public
enum calculator },
//減法運算
sub(
"-")};
string value ="";
//定義成員值型別
private
calculator
(string _value)
//獲得列舉成員的值
public string getvalue()
//宣告乙個抽象函式
public
abstract
intexec
(int a,
int b)
;}
package com.yecc.suanfa.strategy.enums;
/** * created by yecc on 2020/11/26 16:59
*/public
class
demo
}
注意:策略列舉是乙個非常優秀和方便的模式,但是它受列舉型別的限制,每個列舉項
都是public、final、static的,擴充套件性受到了一定的約束,因此在系統開發中,策略列舉一般
擔當不經常發生變化的角色。
策略模式之策略列舉
在使用策略模式時,我們要建立相應的策略,然後根據不同的場景使用不同的策略,這是可以的,但畢竟那是一堆的策略類,使用起來 的可讀性 擴充套件性也就一般,這種情況下我們可以使用策略模式的公升級版 策略列舉來解決上邊的問題 列舉類 public enum strategyenum sub muti str...
策略模式的擴充套件 策略列舉
各位,我給大家出個小學的題目 輸入3個引數,進行加減法運算,引數中兩個是int型的,剩下的乙個引數是string型的,只有 兩個符號可以選擇,不要考慮什麼複雜的校驗,我們做的是白箱測試,輸入的就是標準的int型別和合規的string型別,各位大俠,想想看,怎麼做,簡單得很!有非常多的實現方式,我今天...
演算法 列舉策略
列舉法的基本思想 列舉法的基本思想是根據提出的問題列舉所有可能狀態,並用問題給定的條件檢驗哪些是需要的,哪些是不需要的。能使命題成立,即為其解。列舉結構 迴圈 判斷語句。列舉法的條件 雖然列舉法本質上屬於搜尋策略,但是它與後面講的回溯法有所不同。因為適用列舉法求解的問題必須滿足兩個條件 可預先確定每...