Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

11

24.03.2016, 08:49

Wieso sollte die Factory den Besitz am Objekt behalten, imo wäre es in der Regel sinnvoller, den Besitz am erzeugten Objekt an den Aufrufer der create() Methode weiterzugeben, also einfach den unique_ptr zu returnen...

Ist richtig. Ich mach es zwar teilweise auf die oben genannte Methode, ist aber UseCase spezifisch.

12

25.03.2016, 14:28

Erklär vielleicht mal, wofür genau du eigentlich die abstract Factory zu brauchen meinst, dann können wir uns evtl. eine Lösung überlegen... ;)


Das hab ich ja mit meinem letzten Beitrag zu erklären versucht. Es geht mir darum, dass ich die Instanziierung der Klassen kontrollieren will. Wir haben Klassen, die nur dann instanziierbar sein sollen, wenn zum Zeitpunkt der Instanziierung ein Hardware-Key am System hängt. D.h. die Instanziierung ist dann nicht mehr einfach

C-/C++-Quelltext

1
return new Class(args);


sondern

C-/C++-Quelltext

1
return runtime_check(check_value) ? new Class(args) : nullptr;


oder so was in der Richtung. Wie gesagt. Das ist derzeit noch so simpel, dass man dafür wohl keine Hierarchie bräuchte (z.B. lässt sich die unchecked Instanziierung ja auch mit dem zweiten Fall abdecken, indem man den check_value so wählt, dass der Check immer true zurückgibt), aber es ist ja durchaus denkbar, dass da noch mehr Instanziierungs-Strategien aufkommen, die ich dann unkompliziert integrieren können möchte.

Und da ist es eben schön, wenn ich das alles in der Factory kapseln kann und der Client einfach Factory::create(args) callen kann und nicht wissen muss, was unter der Haube alles abläuft.