Ich habe ein großes Projekt mit einem Treiberteil und ungefähr 5 Bibliotheken, die verschiedene zugehörige Aufgaben ausführen. Viele der Bibliotheken benötigen Zugriff auf 'globale' Konfigurationsdaten, die beim Start vom Treibercode aus einer Datenbank gelesen werden. Mit Treiber meine ich nur den Teil, der die Hauptfunktion enthält.
Meine Idee, wie ich damit umgehen soll, war, eine Konfigurationsklasse mit einer statischen Methode zu erstellen, um die Konfigurationselemente abzurufen. Ist das der beste Ansatz? Wie könnte dies sonst erreicht werden?
z.B:
class config {
public:
static get_item(key);
private:
static values;
};
Ist Singleton-Design hier angemessen?
quelle
Ich denke, dies ist eine der Zeiten, in denen ein Singleton tatsächlich das Richtige ist.
In Bezug auf die Schnittstelle der Klasse selbst können Sie entweder Get-by-Key-Namen verwenden oder Accessoren für die einzelnen Konfigurationswerte haben. Das letztere Schema bietet eine gewisse Bequemlichkeit (IDE-Vervollständigung für einen) und ermöglicht es Ihnen, die Konfigurationswerte in ihre korrekten Datentypen umzuwandeln, bevor Sie sie verwenden. Außerdem wird eine gewisse Trennung zwischen den Benutzern der Konfigurationsklasse und ihrer internen Implementierung eingeführt (die Tatsache, dass alle Konfigurationswerte beispielsweise als Zeichenfolgen gespeichert werden, ist ein Implementierungsdetail, über das sich der Benutzer der Klasse keine Sorgen machen sollte).
quelle