Stilfrage bezüglich Beans mit Collection-Properties

stareagle

Mitglied
Hallo zusammen,

ich habe mal eine Stil-Frage. Angenommen ich habe eine Bean mit einer Collection als Property, und einer weiteren Eigenschaft, ähnlich der folgenden:

Java:
public class Item {
  
  private String name;
  private Item superItem;
  private Map<String, Item> subItems;  
}

Wie man vermuten kann, stehen
Code:
superItem
und
Code:
subItems
in Verbindung. Bei einer Instanz von
Code:
Item
, die in
Code:
subItems
eingefügt wird, soll auch
Code:
superItem
entsprechend gesetzt werden.

Nun möchte ich mich nicht darauf verlassen, dass jemand der diese Klasse benutzt, auch immer die Properties korrekt setzt. Mein Ansatz sieht folgendermaßen aus: Die Getter- und Setter-Methoden für
Code:
superItem
und
Code:
subItems] sind [code]protected
. Neben der Bean gibt es im gleichen Package eine zusätzliche Klasse
Code:
ItemManager
, die Methoden zum Manipulieren der
Code:
subItems
und
Code:
superItem
Properties enthält:

Java:
public class ItemManager {
  
  private Item managedItem;

  public ItemManager(Item managedItem) {
    this.managedItem = managedItem;
  }

  public Map<String, Item> getItems() {
    return new HashMap<String, Item>(managedItem.getItems());
  }

  public Item getItem(String name) {
    return managedItem.getItems().get(name);
  }

  public void addItem(Item item) {
    managedItem.getItems().put(item.getName(), item);
    item.setSuperItem(managedItem);
  } 

  //Weitere Methoden z.B. zum Entfernen eines Items.
}

Meiner Meinung nach ist das ein gutes Design, aber ich würde gerne mal andere Meinungen hören.

Beste Grüße

Stareagle
 

Volvagia

Top Contributor
Warum machst du das nicht direkt in der Itemklasse?
Also setSuperItem private, package protected oder public addItem, und wie gehabt wird setSuperItem beim adden gesetzt.
 

Wildcard

Top Contributor
Am einfachsten du erstellst deine Klassen mit EMF. Dort ist das dann eine sogenannte Containment Reference und EMF kümmert sich darum das superItems und subItems immer konsistent sind.
Eclipse Modeling - EMF - Home
Du brauchst dann auch kein addItem, oder removeItem, sondern die Liste kann direkt manipuliert werden und EMF stellt die Konsistenz sicher.
 

Ähnliche Java Themen

Neue Themen


Oben