策略模式(策略列舉)

2021-10-10 16:21:13 字數 2172 閱讀 1248

## 首先定義乙個介面:

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型別,各位大俠,想想看,怎麼做,簡單得很!有非常多的實現方式,我今天...

演算法 列舉策略

列舉法的基本思想 列舉法的基本思想是根據提出的問題列舉所有可能狀態,並用問題給定的條件檢驗哪些是需要的,哪些是不需要的。能使命題成立,即為其解。列舉結構 迴圈 判斷語句。列舉法的條件 雖然列舉法本質上屬於搜尋策略,但是它與後面講的回溯法有所不同。因為適用列舉法求解的問題必須滿足兩個條件 可預先確定每...