クラスの分け方について質問です。言語はC#です。

とあるソフトの設計をしていて、いくつかの固まった処理をクラスにしようと設計を行いました。
ところが、それぞれのクラスがお互いのインスタンスを必要としており、どのようにクラスを定義すればいいか悩んでおります。

例えば、クラスがA B C Dとあり
クラスAはクラスBとDが必要
クラスBはクラスAとBが必要
クラスCはクラスAとBとD全て必要
クラスDはクラスCが必要・・・とお互いのクラスがお互いを必要になっていてどのようにインスタンスを作ればいいのかに悩んでいます。

例えば、インスタンス化する時にthisを渡して、別のクラスにアクセスする時はthis経由でアクセスする仕組みに統一するか
それは避けたほうがいいから頑張って必要なクラスを整理するか
全てのクラスを管理するクラスをまた新しく作るか・・

何かアドバイスがあれば頂けますでしょうか
よろしくお願いします