策略模式的使用情景
最近在做一個比賽,由于算法肯定有多種,但是還沒有確定具體有哪些策略,所以不知道還要寫什么東西,所以采用了策略+簡單工廠的設(shè)計模式。策略模式可以處理在不同時間應(yīng)用不同的業(yè)務(wù)規(guī)則的這種變化性。
類圖
算法的簡略類圖
實現(xiàn)
interface Algorithm{
int getAction(int index);
}
class AlgorithmAImpl implements Algorithm{
@Override
public int getAction(int index) {
return index+1;
}
}
class AlgorithmBImpl implements Algorithm{
@Override
public int getAction(int index) {
return index+2;
}
}
class AlgorithmManager{
Algorithm mAlgorithm;
int type;
int getRes(int type){
this.type = type;
switch (type){
case 0:
mAlgorithm = new AlgorithmAImpl();
break;
case 1:
mAlgorithm = new AlgorithmBImpl();
break;
default:
break;
}
return getAction(type);
}
private int getAction(int index){
return mAlgorithm.getAction(index);
}
}