Ich habe ein Problem beim Entwerfen einer Software. Ich habe ein sehr großes Objekt (BO), sagen wir eine Karte von dynamischen Arrays, auf die ich über verschiedene Klassen hinweg zugreifen muss. Jedes Mal, wenn eine Klasse BO verwendet, fügt sie neue Daten hinzu oder verwendet einige der Daten in BO, um Berechnungen durchzuführen.Erstellen einer systemweiten Ressource C++
Als Neuling bin ich verloren, wie ein solches Objekt in C++ zu entwerfen, so dass mein Code-Design und Architektur gut ist. Eine globale Variable zu erstellen ist nicht effizient genug. Sie wurde in Singleton erforscht, hat aber die Regel herausgefunden, dass Sie nur auf das Objekt zugreifen und es nicht ändern können.
Kann mir jemand in die richtige Richtung zeigen? Welches Designmuster sollte ich verfolgen, das am effizientesten und am besten skalierbar ist?
Dank
Basierend auf den Antworten hier ist die folgende eine korrekte design- es psudo ist!
Class BigObject {
private static BigObject instance = null;
private map;
private BigObject() { }
public static BigObject getInstance() {
if (instance == null) {
instance = new BigObject();
}
return instance;
}
public getArray(string key) {
return map[key];
}
public setBigObject(string key, Array value) {
map.insert(key, value);
}
Erstellen des Objekts in der Anwendung Wurzel, am wahrscheinlichsten Haupt, und es passieren zu Klassen/Funktionen, die für seine Änderung verantwortlich sind. Wenn du jedoch sagst, dass du ein riesiges Objekt hast, ist das auch eine riesige rote Flagge, die dich in der Zukunft verletzen kann, abhängig davon, was genau dieses riesige Objekt tut. –
Die von einem Singleton verwalteten Daten können Sie bei Bedarf abrufen und ändern. Benötigen Sie mehrere Threads, um auf das sehr große Objekt zuzugreifen und es zu ändern? Müssen Sie aus anderen Anwendungen auf das große Objekt zugreifen? –
Warum ist die globale Variable nicht effizient? – user4581301