Wie zum erstellen von Objekten mit Parametern generiert, nach einem eindeutigen Schlüssel

Will ich haben Objekte mit einer Reihe von Eigenschaften und eine einzige eindeutige Identifizierung wichtiger. Als der Schlüssel eindeutig ist, kann es verwendet werden, um herausgreifen einen bestimmten Satz von Eigenschaften. Ich möchte in der Lage sein, um die Schlüssel zu verwenden, wenn das Objekt instanziiert, so dass die Eigenschaften im Zusammenhang mit diesem Schlüssel werden die Attribute für das Objekt.

Eigentum Spezifikation werden regelmäßig (D. H. wenn man Schlüssel hat eine Eigenschaft namens Beschreibung dann, so wird jede andere Taste).

Ein Schlechtes Beispiel

Diesem Beispiel ist, wie ich versucht, zunächst den Ansatz der problem und ist unzureichend. Ich poste es hier zur Veranschaulichung der Probleme mit diesem Ansatz.

Hätte ich einen Food-class, die Namen und die Beschreibung der Attribute. In diesem Fall wird der name sein soll, einen eindeutigen Schlüssel besitzen, in diesem Fall, nur eine Beschreibung.

public class Food {
  private String name;
  private String description;

  public Food(String name, String description) {
    this.name = name;
    this.description = description;
  }
}

Probleme mit diesem Ansatz

Erstens, wenn ich eine bestimmte Art von Essen, sagen wir pizza, die ich eingeben muss, die gleiche Beschreibung, jeder Zeit, sagen Sie "Ein beliebtes italienisches Gericht". Was ich vorziehen würde, ist in der Lage sein, ein Objekt zu erstellen weiß man nur die Namen der Lebensmittel, und haben dann den rest der Attribute ausgefüllt für mich. In anderen Worten, ich sollte in der Lage sein nur pass auf pizza, und das Objekt wird erstellt, mit einer entsprechenden Beschreibung.

Zweitens, das Beispiel hat keine garantierte Einzigartigkeit für das name-Attribut. Ich könnte eine pizza mit einer Beschreibung des "Ein beliebtes italienisches Gericht" und ein anderes mit einer Beschreibung von "Kitschig Güte!" Allerdings möchte ich die Namen eindeutig wählen Sie aus einer Reihe von Attributen. Natürlich ein Attribut gehören könnte mehrere Schlüssel (pizza und pasta könnte beide haben eine Beschreibung von "Ein italienisches Gericht"), aber der Schlüssel kann nur über eine Besondere Beschreibung.

Mögliche Lösungen

Ich mir vorstellen, dass dies erfordert, dass mindestens 2 Dinge:

  1. Gewisser Weise der Verknüpfung einen Namen mit einer Reihe von Parametern. Eine HashMap scheint ideal für diese, aber wo wäre ein guter Ort, um es zu speichern? Es scheint sehr seltsam, legte es in das Essen Klasse.

  2. Einige Klasse erstellen, die Griffen das Gebäude des Food-Objekte (vielleicht wäre dies ein guter Standort für die obigen HashMap?) Ich habe nach dem Factory-und Builder-Muster, aber das Werk scheint für die Erstellung von verschiedenen Unterklassen und ich möchte in der Lage sein zu speichern 1000s der unterschiedlichen item-Namen (und nicht 1000 verschiedene Unterklassen). Der generator scheint für die Angabe aller Attribute eines Objekts in einen einfacheren Weg, dass die Erinnerung an die Reihenfolge der Parameter im Konstruktor, während auch die Gewährleistung, dass ein Objekt kann nicht auf halbem Weg instanziiert, aber das scheint fast das Gegenteil von dem, was ich Suche.

  • Wenn das Essen name nicht ein eindeutiger Bezeichner, wie werden Sie wissen, welche Beschreibung zu verknüpfen, wenn Sie erstellen ein Lebensmittel, indem Sie nur den Namen?
  • Meine Entschuldigung, ich meinte das Beispiel was ich derzeit aber mit Problemen, von denen ist der Mangel an Einzigartigkeit. Einzigartigkeit ist etwas, was ich will. Ich werde meinen Beitrag Bearbeiten zu machen, dass klarer.
  • verwenden Sie allerdings etwas von Datenbank-oder Persistenz-api? ich meine, wenn Sie möchten, dass Ihre Objekte, um Abfragen in den Beschreibungen automatisch, Sie müssen irgendwo vorhanden sein.
  • eigentlich ist dies eine Datenbank-Aufgabe, ABER da willst du etwas Unmögliches machen: create an object knowing only the name of the food and then have the rest of the attributes filled in for me kombiniert mit no guaranteed uniqueness for the name. Sagen, dass ich eine Pizza, wie funktioniert mein code entscheiden, ob er zu nehmen "italienisches Gericht" oder "kitschig"??? Sie entweder das Essen Klasse int id und dann erstellen Sie Ihre Objekte nur gibt es die id und nicht den Namen, oder Sie generieren eine Menge von Objekten, für jeden Namen, und danach überprüfen, wie viele Elemente es gibt und nutzen Sie alle oder nur die erste ...
  • Ich will Einzigartigkeit. Aus der Frage: However, I want the name to uniquely pick out a set of attributes. d.h. die Tatsache, dass das Beispiel erstellen können 2 Lebensmittel mit dem gleichen Namen, aber unterschiedlichen Beschreibungen ist ein problem, das ich lösen will, nicht ein Ziel ich erreichen will. Sorry für die Verwirrung!
Schreibe einen Kommentar