![继承导致的耦合问题示意图]
在面向对象设计中,我们常面临一个经典困境:当需求发生变化时,是修改基类还是新增子类?这往往决定了系统的生死。今天通过一个具体的 C++ 案例,聊聊如何从硬编码走向灵活适配。
一、初始方案:继承的诱惑
假设我们要模拟'狗熊'的行为,包括冬眠、爬树和居住习惯。起初,大家都会觉得这是典型的继承题。既然熊大熊二都住在团结屯,除了吃的口味不同,其他行为完全一致,使用继承大法似乎能实现代码复用。
#include <iostream>
#include <string>
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() override { ; }
};


