我最近不得不开始使用一种第一次没有多重继承的语言,而且我在使用复合设计模式合成对象时遇到了麻烦。因此,使用字母表示对象和箭头作为依赖关系,我只了解如何将以下关系转换为复合:
a e
^ ^
b < d < h > f
v v
c g
合成是我在这种情况下一直做的事情。当依赖关系颠倒过来时会出现问题:
a e
v v
b > d > h < f
^ ^
c g
过去我使用了虚拟多重继承,我无法弄清楚如何使用合成以一种体面的方式封装它:依赖关系不断涌入调用代码。并且甚至没有进入这样的情况:依赖关系不能形成有向无环图并形成更多的松散网络,我总是发现多重继承封装得很好。
当我试图查看这一切时,我所能找到的只是所提到的第一种情况的例子,并引用了#34; dreaded&#34;继承钻石,这有点令人困惑,因为据我所知,获取钻石似乎是具有多重继承的全部要点。