策略模式实战:从硬编码到算法解耦的演进之路

一、场景引入:当需求开始变化
想象一下,你负责开发一个模拟系统。起初,需求很简单:模拟几种熊的行为,比如冬眠、爬树、居住习惯和食物偏好。
1.1 初始方案:继承的诱惑
面对这种多态需求,第一反应往往是继承。既然熊大、熊二都属于熊,它们共享大部分行为,只有'吃什么'不同。于是,我们定义一个基类 Bear,将通用行为写进去,子类只负责实现差异点。
class Bear {
public:
virtual std::string FavoriteFood() = 0;
void Hibernation() { std::cout << "进行冬眠" << std::endl; }
void ClimbTree() { std::cout << "会爬树" << std::endl; }
void LivingHabit() { std::cout << "住在树洞里面" << std::endl; }
protected:
};
class XiongDa : public Bear {
public:
std::string FavoriteFood() override { return "苹果"; }
};
class XiongEr : public Bear {
public:
std::string FavoriteFood { ; }
};



