1.策略:针对某种问题给出的解决方案。
2.场景:去上班交通工具选择策略:驾车,骑自行车,步行 三种不同策略,我们可以分别实现三种策略
class 驾车
{
}
class 骑行
{
}
class 步行
{
}
上述代码分别实现了三种策略,我们在客户端只需要根据自己的选择,选择一种策略即可。
3.上述结构侧问题,我们之前在设计模式总体理解中有说过软件设计的需求会随着时间的推移而变化,假如我们在以后日子里要增加 爬行 的方式上班,这是应该怎么加?
4.增加模块,这个问题设计模式总体理解中也有说到,虚函数+继承的方式。
class 策略抽象
{
virture void 策略() = 0;
}
class 驾车 : public 策略抽象
{
void 策略()
{
// 宝驹车
}
}
class 骑行 : public 策略抽象
{
void 策略()
{
//骑行
}
}
class 步行 : public 策略抽象
{
void 策略()
{
//步行
}
}
class 爬行 : public 策略抽象
{
void 策略()
{
//爬行
}
}
上述客户端在依赖的时候,则需要依赖抽象,而不依赖具体的实现细节。