Frage

Wenn Sie eine Klasse A, die ein Aggregat der Klasse B und C ist, ist es besser für A

  • speichern IDs für B und C
  • zu laden und zu speichern, das gesamte Objekt für B und C (Bearbeiten, zu speichern durch Bezugnahme B / C, d.h. instanziieren Objekte B und C, im Gegensatz zu Objekt zu IDs für B und C speichert.
  • Speichern der die ID und bieten Methoden Methoden B und C
  • ziehen

Ich gehe davon aus dieser variiert in Abhängigkeit von Leistungsanforderungen und anderen requierements abhängig, aber ich bin nur für alle allgemeinen Richtlinien oder Gedanken.

War es hilfreich?

Lösung

In einem typischen Programm im Speicher ausgeführt wird, werden Objekte fast immer durch Verweis als Zeiger gespeichert werden, so dass Sie IDs für B und C zu speichern, es ist nur, dass Sie nicht mit den Details Sie beschäftigen sich, die Sprache versteckt sie aus Sie.

Laden und Speichern der „gesamte Objekt“ ist ein fragwürdiger Begriff. Ich weiß, dass Sie versuchen, die Sprache, unabhängig zu sein, aber eines der ersten Dinge, die mir wirklich geholfen „Get“ OO ist, dass fast jeder Gegenstand einen Lebenszyklus seiner eigenen haben.

Wenn Sie Objekt A haben, dass „Enthält“ Objekt B, und Sie übergeben eine Referenz B Objekt C zu widersprechen, wird das Objekt A etwas über das Objekt C wissen hat, diese nicht vollständig in Ordnung ist. Freisetzung von Objekt B Lebenszyklus, so dass das Objekt A weiß nichts von Objekt C eines der zentralen Konzepte, die OO Arbeit macht.

Also, wenn das ist, was Sie gemeint, indem das gesamte Objekt zu speichern, dann nicht -. Nie tun

Und das gilt für Datenbanken und andere Speicher auch. Selbst wenn ein Objekt für die Zerstörung eines anderen verantwortlich ist, sollte es selten die anderen Objekte Daten enthält.

Und (obwohl ich glaube, Sie wollte sagen, „Pull Objekte B und C“, nicht „Methoden“), das Konzept der Lage zu sein, ein Objekt von einem anderen zu übergeben ist auch sehr nützlich, und es ist in der Regel nichts falsch mit ihm mit eine Einschränkung:

Denken Sie daran, dass ein Objekt hat keine Kontrolle über was außerhalb seiner selbst geht weiter. Es könnte herumgereicht werden, die so genannten Methoden in einer halb-zufälligen Reihenfolge, etc. Daher ist es hilfreich, das Objekt so sicher wie möglich zu halten. Wenn etwas in der falschen Reihenfolge aufgerufen wird, oder eine ungültige Variable übergeben, oder Sie feststellen, dass irgendwie haben Sie einen ungültigen Zustand eingetreten, Fehler früh und ausfallen LOUD so dass der Programmierer, der einen Fehler es genannt hat.

Sie wollen es auch so schwer wie möglich machen, in einen illegalen Zustand zu erhalten - dies bedeutet, halten Sie Ihr Objekt klein und einfach, machen Variablen endgültig, wann immer möglich und versuchen, nicht zu viele Orte, an denen Parameteraufruf, um Fragen zu haben <. / p>

Andere Tipps

Ich neige dazu, die ganzen Objekte zu laden und zu speichern (und deren Subobjekte) als Standard-Ansatz.

Manchmal wird diese lange Ladezeiten verursachen, einen großen Speicherbedarf, oder beides. Dann müssen Sie bestimmen, ob alle geladenen Objekte werden in der Tat verwendet oder wenn viele erstellt und nie abgerufen.

Wenn alle Objekte verwendet werden, wird ein kreativer Ansatz benötigt werden, um eine Teilmenge zu laden, verarbeiten diejenigen, entsorgen sie, und dann die nächste Teilmenge lädt alles in den Speicher zu passen - oder einfach mehr Speicher kaufen und es zur Verfügung stellen Ihre Anwendung.

Wenn viele der Objekte nicht verwendet werden, der beste Ansatz ist es, die Unterobjekte zu faul laden, wie sie benötigt werden.

Das hängt von der Situation ab. Wenn die Objekte in Erinnerung bleiben, dann ist es mehr OO (und einfacher) hat A enthalten B und C. Ich habe festgestellt, dass, wenn die Objekte beibehalten werden müssen, aber es macht die Dinge einfacher und effizienter für die A-IDs zu speichern für B und C (auf diese Weise, wenn Sie Daten direkt in A benötigen, aber nicht B und C, werden Sie nicht B und C aus der Datenbank ziehen müssen, Datei, etc.)

Es hängt davon ab,

Wenn B und C sind schwer und Kosten zu laden und zu konstruieren, könnte es sich lohnen, das Laden von ihnen zu verschieben, bis Sie sicher sind sie nötig sind, um (Faule initialisieren).

Wenn sie sind einfach und leicht vielleicht nur Sie wollen, dass sie konstruieren, wann immer, erhalten Sie die Ids.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top