开发者社区> 问答> 正文

避免多重继承的设计模式

想象有一个游戏编程团队,一个设计师专注于数据,因此他创建了两个类:

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。

除了使用多重继承以外,还有其他设计模式或技术可以做到这一点吗?

展开
收起
几许相思几点泪 2019-12-23 17:43:42 1038 0
1 条回答
写回答
取消 提交回答
  • 技术架构师 阿里云开发者社区技术专家博主 CSDN签约专栏技术博主 掘金签约技术博主 云安全联盟专家 众多开源代码库Commiter

    厉害了。

    2019-12-28 14:17:14
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载

相关实验场景

更多