想象有一个游戏编程团队,一个设计师专注于数据,因此他创建了两个类:
class EnemyProperties {
public:
int health;
};
class OrcProperties : public EnemyProperties {
public:
int strength;
};
另一个程序员专注于行为,作为class Enemy,他创建了一个实现:
class EnemyImpl : public EnemyProperties {
public:
void run() {}
};
但在实现时Orc,他写道:
class OrcImpl : public OrcProperties, public EnemyImpl {
public:
void attack() {}
};
他觉得如果有更多这样的原型,钻石继承可能会发生,所以他必须继承所有继承virtual。
虽然虚拟继承解决了这个问题,我有一种感觉这不是一个菱形继承问题的其他设计模式的问题,简单的说:该OrcImpl应继承的实现EnemyProperties,并定义其所属的行为Orc。
除了使用多重继承以外,还有其他设计模式或技术可以做到这一点吗?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
厉害了。