私はclassA
を持っているとしましょう。そのフィールドには独自のフィールドがあり、カプセル化の基準に準拠していますか?それから、私はの最後の状態(classA
の方法のうちの1つによって得られ、ややカプセル化を破る)をその実行のために必要とするclassB
を持っています。そして、私たちはclassC
を持っています、そしてそれは再び最終状態classB
を必要とします。そういうことで、classM
に言います。それはあまりにも高い結合かどうかと考えられていますか?カップリングが高すぎたり、このようにデザインしても大丈夫ですか?
編集:私は、敵が敗北した(それぞれの敵は異なる落としのチャンスを持つ)ために落ちるかどうかによってLootシステムを設計していたとしましょう。敵が倒れた場合、クラスハンドリングの戦闘は、何かを落とすかどうかにかかわらず、サイコロを振って、その状態を戦利品の配布を扱う他のクラスに伝播する必要があります。ドロップがある場合、クラス処理ルートは、ルーツの生成とプレイヤーへの配布を実行します(そうでない場合は無効)。その上
classA a = new classA;
... //classA does its stuff
classB b = new classB(a.getFinalState());
... // again class does its stuff based on outcome of A
classC c = new classC(b.getFinalState());
そして:
最終実行は次のようになります。
私はここで問題を理解できませんか?なぜオブジェクトaをオブジェクトbのコンストラクタに渡すだけではないのですか?カプセル化を破ることなく状態を判断するための通常の手段によって、それを調べることができます。あまりにも多くを公開することを心配しているのであれば、おそらくpackage-privateゲッターを使用したり、インターフェースを独自のモジュールに分離したりしてみてください。あなたは良い質問をしていますが、あまりにも難しいと思っています。 ;-) – jgitter