Designfrage zu Factory
-
Ich wollte eine Factory erstellen mit dem Zweck mehrere Verschiedene Produkte zu erstellen sowie benötigte Hilfsfunktionen zu beherbergen, sie benötigt selbst keine eigenen Variablen.
Also Im Grunde sowas:
class Factory { private: //Hilfsfunktionen public: A* createA(); B* createB(); };
Zum Design hätte ich nun die Frage was solte man hier eher nehmen, eine normale Klasse, eine Singleton oder sollte man eher alle Funktionen static machen? Alle 3 Varianten würden ihren Zweck erfüllen, nur kann ich mich nicht so recht entscheiden.
Ich hab mir noch die verschiedenen Pattern angesehen weiß alelrdings echt nicht welchem Pattern das hier am nächsten kommt.
-
namespace fehlt noch in der aufzählung der alternativen.
-
namespace bringt mich aber nicht wirklich weiter weil damit ja der Zugriff auf die Hilfsfunktionen frei wäre.
-
Xebov schrieb:
namespace bringt mich aber nicht wirklich weiter weil damit ja der Zugriff auf die Hilfsfunktionen frei wäre.
sehe ich nicht. die hilfsfunktionen sidn global (besser im anon namespace) in der *.cpp und nur die öffentlichen sind überhaupt im header angemeldet.
-
Stimmt da hatte ich garnicht dran gedacht, allerdings wäre der namespace dann fast das gleiche wie alles auf static.
-
Xebov schrieb:
Stimmt da hatte ich garnicht dran gedacht, allerdings wäre der namespace dann fast das gleiche wie alles auf static.
Ja, aber wozu Dinge in eine Klasse stopfen, die dort gar nicht hingehören? C++ ist nicht Java.
-
Nexus schrieb:
Xebov schrieb:
Stimmt da hatte ich garnicht dran gedacht, allerdings wäre der namespace dann fast das gleiche wie alles auf static.
Ja, aber wozu Dinge in eine Klasse stopfen, die dort gar nicht hingehören? C++ ist nicht Java.
OK, allerdings frage ich mich wo du da die Grenze ziehen würdest. Rein von der Sache her könnte man sowas ja auch nutzen um zB Singletons die auch nur als reine Serviceklassen für erstellen und verwalten da sind zu einem namespace zu machen und somit alle Internen Funktionen und Klassenvariablen nach außen hin verstecken und nur den reinen Service sichtbar zu machen, damit würde man dann allerdings Klassen defakto nurnoch nutzen wenn sie tatsächlich instantiiert werden. Außerdem müsste man hier wohl das aufbrechend er namespaces vermeiden.
-
Xebov schrieb:
OK, allerdings frage ich mich wo du da die Grenze ziehen würdest. Rein von der Sache her könnte man sowas ja auch nutzen um zB Singletons die auch nur als reine Serviceklassen für erstellen und verwalten da sind zu einem namespace zu machen und somit alle Internen Funktionen und Klassenvariablen nach außen hin verstecken und nur den reinen Service sichtbar zu machen, damit würde man dann allerdings Klassen defakto nurnoch nutzen wenn sie tatsächlich instantiiert werden.
Diese Singletons leben gerne als Klasseninstanzen, denn auch sie würden gerne Destruktoren haben und zu Programmende aufgeräumt werden.
-
volkard schrieb:
Diese Singletons leben gerne als Klasseninstanzen, denn auch sie würden gerne Destruktoren haben und zu Programmende aufgeräumt werden.
Wenn sie aufgeräumt werden müssen. Ich verstehe jetzt aber wieso du auf die namespaces gekommen bist.