Car Validatorと、その属性を読み取ってそれらを検証する多くのメソッドを想定します。したがって、それを構造化する最良の方法は、Carをインスタンスフィールドにすることです。
それを作る2つの方法:
1) Carを引数としてコンストラクターを作成し、validate()を呼び出します。
2)すべてのコンストラクターを削除しますが、引数としてメソッドを検証するためにCarを渡します:validate(Carcar)。
このバリデーターが継続的に検証する必要があると想像すると、500台の車を考えてみましょう。
1)メソッドでは、500個のバリデータオブジェクトをインスタンス化する必要があります...ガベージコレクターがその仕事を本当にうまくやっているとしても、それはベストプラクティスではないようです。利点は、Carフィールドの初期化がコンストラクター=>によって行われるため、より自然な方法であるということです。
2)メソッドを使用すると、 1)の欠点を回避できますが、Carフィールドをメソッドvalidateに初期化する必要があります。つまり、オブジェクトの構築後です。それは良い習慣と考えられていますか?実際、検証メソッドはCarフィールドを使用するだけであり、さらに、プライベートではない検証メソッドのみがあります。
もちろん、すべての疑問を回避するためにこれを行う3番目の方法があります=>検証メソッドから各プライベートメソッドにCarを渡します...しかし、これは非常に醜いです...
3つの方法のどれを選択する必要がありますか?