>>603
なんて駄目な設計なんだ・・・ どうしてこんな設計に・・・

まず、
>Aの持ってるC → Cを管理してるD
これはCを、AとDが二重に管理しているという解釈でいいよな?
なんで二重に管理する必要があるんだ、どうせ機能は同じようなものなんだからまとめてしまえ。
Cを管理するA(D)
もしくは、DはAを管理するようにする。
Cを管理するA ← Aを管理するD

つぎ、
>Cを管理してるD → Dの基本クラスのE → Eの持ってるB
そもそもDはEを継承しているんだから、Bも直接管理できるはずだろう。(出来ないならそれは継承するべきではない)
基本クラスのEを気にする必要は無い。
BとCを管理するA(D)
もしくは、 
Cを管理するA ← AとBを管理するD

超すっきり。
そもそも、上にAとBを管理するクラスがあるのに、
>A → B 
なんて直接アクセスするような、行き当たりばったりなコーティングをするからいけないんだ。
これはAがやる仕事じゃないだろ。なんで上に管理させてるんだよ。