策略模式
概念
- 定义一系列算法,把它们一个个封装起来,并且使它们可以互相替换。Strategy 可以使算法独立于使用算法的客户端
GOF定义的UML图
例子
不使用策略模式时
假设有一个APP,是中文版的,现在业务拓展需要支持英文版、法语版、德语版等等。大部分初学者的思路应该如下
1.定义枚举类
2.大量if else 或者 switch case判断,再实现具体内容
enum Language
{
ENGLISH = 0,
FRENCH,
GERMAN
};
void Fun1(Language language)
{
if (language == ENGLISH)
{
cout << "中文翻译成英文" << endl;
}
else if (language == FRENCH)
{
cout << "中文翻译成法文" << endl;
}
else if (language =