私はクラスを設計しています...
オブジェクトを渡す必要があるか、オブジェクトを「取得」できる必要がある重要なメソッドがあります。
したがって、問題は、メソッドが正しく機能するために、ゲッター/セッターを使用するか、オブジェクトを引数としてメソッドに直接送信する必要があるかどうかです。それとも、クラスが正しく動作するためにオブジェクトが本当に重要である場合、コンストラクターを介してオブジェクトを設定する必要がありますか?
私はクラスを設計しています...
オブジェクトを渡す必要があるか、オブジェクトを「取得」できる必要がある重要なメソッドがあります。
したがって、問題は、メソッドが正しく機能するために、ゲッター/セッターを使用するか、オブジェクトを引数としてメソッドに直接送信する必要があるかどうかです。それとも、クラスが正しく動作するためにオブジェクトが本当に重要である場合、コンストラクターを介してオブジェクトを設定する必要がありますか?
特定のオブジェクトなしでこのクラスのインスタンスを持つことが意味がない場合 (たとえば、データベースへの接続なしでデータアクセス クラスを構築することは意味がない場合があります)、それは「依存関係」であり、一部である必要があります。コンストラクタの。
クラスがそれなしで存続できる場合、またはデフォルト値を使用できる場合は、代わりにそれをプロパティにして、使用する前に割り当てられているかどうかを確認できます。
ただし、ほとんどの場合、コンストラクター依存性注入を強くお勧めします。
問題は、それらがどれほど「重要」であるかではありません (すべてのメソッドは、定義上、必要なデータを持っている必要があります)。より良い質問は、それらがどのくらいの頻度で変更されるかです。メソッドが呼び出されるたびに異なる場合 (または少なくとも合理的にそうなる可能性がある場合)、それらはパラメーターである必要があります。それらがオブジェクトの存続期間中 (またはそのかなりの部分) にわたって一般的に同じであると予想される場合は、それらをオブジェクトと共に保管する必要があります。
後者の場合、セッターを呼び出すユーザーだけに頼らないでください。それらが必要な場合は、セッターによって変更できる場合でも、コンストラクターで設定する必要があります。
それらが正しく動作するクラスに必要な場合は、コンストラクターでそれらを要求するか、コンストラクター内に設定する必要があります。
それを渡すかどうかについて。私は、クラスが自分自身を処理できるときを好むので、クラスに仕事をさせ、必要なものを手に入れさせます。