strategy pattern 策略模式是一種比較簡單的模式,其定義如下:
define a family of algorithms, encapsulate each one, and make them interchangeable
定義一組演算法,將每個演算法封裝起來,並且使它們可以互換
通用原始碼:
public inte***ce strategy
public class concretestrategy1 implements strategy
}
public class concretestrategy2 implements strategy
}
最後是演示類:public class context
// 封裝後的策略方法
public void doanything()
}
策略模式的優點:public class client
}
1,演算法可以自由切換
2,避免使用多重條件判斷
3,擴充套件性良好
策略模式的缺點:
1,策略類數量增多
2,所有策略類都需要對外暴露,我們可以使用其他模式來修正這個缺陷,比如工廠方法、**模式等
策略模式使用場景:
1,多個類只有在演算法或行為上稍有不同的場景
2,演算法需要自由切換的場景
3,需要遮蔽演算法規則的場景
策略模式注意事項:
如果系統中乙個策略家族具體數量超過4個,則需要考慮使用混合模式。
策略模式的擴充套件:策略列舉
乙個簡單的輸入兩個數和乙個+或者-的運算符號,計算結果。
public enum calculator
},//減法運算
sub("-")
};string value = "";
private calculator(string _value)
public string getvalue()
public abstract int exec(int a, int b);
}
實際專案中,我們一般通過工廠方法來實現策略類的宣告。public class clientenum
}
本人部落格已搬家,新位址為:
設計模式之策略模式
include using namespace std 飛行行為介面類 class flystrategy 高空飛行行為具現類 class heightfly public flystrategy virtual void fly private heightfly 低空飛行行為具現類 class ...
設計模式之 策略模式
策略模式 strategy pattern 定義了演算法家族,分別封裝起來,讓他們之間可以互相替換,此模式讓演算法的變化,不會影響到使用演算法的客戶。策略模式是一種定義了一系列演算法的方法,從概念上來看,所以得這些演算法完成的都是相同的工作,只是實現不同,它可以以相同的方式呼叫所有的演算法,減少了各...
設計模式之策略模式
何為策略,就是可以實現目標的方案集合。而完成一項任務有不同的方式,每一種方式稱為乙個策略。策略模式就是定義一系列演算法,將每乙個演算法封裝起來,並讓他們可以相互替換。很簡單的乙個例子 年底移動公司推出很多的活動,比如說 存話費贈食用油,交話費贈話費,買手機贈話費 等等。推出這些個活動目的就只有乙個,...