私は、入力データを扱う必要がありますどのように(私はScannerクラスを使用しwantto。)最初の名前、年齢、性別、体重などのようにユーザーを形成データの入力時にオブジェクトを作成する方法は?
私はクラスPersonを持っていると私は入力データにしたいですPersonクラスのオブジェクトを作成しますか? 以下のオプションを検討し、どのオプションを使用するかを知りたいと思います。
1)STARTで引数なしのコンストラクタを持つPersonオブジェクトを作成し、 - データの入力ONE PIECE(例えば最初の名前) - 上記の目的 にこのデータを設定するために、人のセッターを使います - 他のデータのステップを繰り返します。 最後にオブジェクトをPersonDAOに送信
短所:Personクラスの引数なしのコンストラクタを含めると、無効なPersonオブジェクトは、プログラム内の他の場所にあります。
2)マルチパラメータのコンストラクタを持つPersonオブジェクトをENDに作成します(これは本当に心配すべきかどうかはわかりません)。 - 最初にデータを1つずつ入力し、配列/リスト/変数に保持します。 - 入力が完了したら、配列/リスト/変数からデータの部分を抽出し、それらをPersonのコンストラクタに入れてPersonオブジェクトを作成します(多くのパラメータを持つもの) 最後にオブジェクトをPersonDAOに送ります。
欠点:いずれかの引数が無効な場合、私はそのことについてかなり遅れて学習します。全体の手順はより複雑に見えます。
どちらのオプションが優れていますか? DAOに送る前に入力データを扱う他の方法があるかもしれません...
DAOはオブジェクトのGETTERSを使用してデータベースにレコードを作成しますか?
Builderを入れ子にした静的クラスとして作成しても差はありますか? – enhancedJack
違いはなく、パターンのもう一つの実装です。しかし、ネストされたクラスを使用する場合、メインクラスのビルダーのフィールドを複製する必要があります。そのため、内部クラスの実装を優先します。 – Beloo
さらに2つの質問 1)BuilderがPersonのインスタンス変数に直接アクセスできる場合、Personクラスのカプセル化を解除しないでください。 2)引数なしのコンストラクタでは、build()メソッドの実装に没頭して、有効なPersonオブジェクトを作成する方法を見つけなければなりません。問題無いですか? – enhancedJack