私はカプセル化とゲッター/セッターについてSESEでthis answerを読んでいました。セッターが実施されたので、もし、それは例えば、変更を反映する新しいオブジェクトを返します、私は不変クラスを使用することを好むと仮定します。リンクで情報を表示するためのデータ構造を返す
//return a new Book reflecting the price change.
public Book updatePrice(double price){}
、答えは私がgetDisplayinformation()
というメソッドを持って提案しましたデータ構造体を返します。
私は著者の一覧でブックを返すだろうか、このアドバイスに続き
(列挙型、構造体、またはmethodlessクラスをインデックスとする配列を思いますか)?
public final class Author{
private final String id;
private final String firstname;
private final String lastname;
//Constructor
}
public final class Book{
private String bookID;
private final String title;
private List<Author> authorsList;
private double price;
//Constructor
}
Map<String,String>
を返信したいとします。
public Map<String,String> getDisplayinformation(){
Map<String,String> displayMap = new HashMap<String,String>();
display.put("BookTitle", title);
display.put("ID", bookID);
display.put("Price", price.toString())
//insert authorsList;
return displayMap;
}
ブッククラスでtoStringメソッドを実装しないのはなぜですか?私は地図の目的を見ません。しかし、リストを文字列にすることができますので、私はあなたの問題を理解しません –
私が提供したSESEリンクの答えは、カプセル化を破ることなく表示したいフィールドを返すようにデータ構造を提案しました。私はすべてのフィールドを表示したいので、私はeveroneのゲッターを提供する必要があります。この悪いデザインではないですか? –
私は@ cricket_007によって作られた点に同意しました。 – Ravi