PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : C++ abstrake Fabrik ...richtig.


mekakic
2012-06-01, 10:56:55
Ich habe in meiner Software eine Reihe Interfaces zum Beispiel "IDataReader". Die Software soll nur mit dem Interface interagieren, die konkrete Realisierung dahinter verschwinden.

Ich hatte mir überlegt etwas in der Art "IDataReader::createInstance( CDataReaderconfig * config_ptr )" zu machen. In Abhängigkeit von der Konfiguration wird dann ein IDataReader implementierendes Objekt erzeugt.

Alternativ wäre etwas derart möglich wo es eine Fabrik gibt und für jedes Produkt eine create()-Methode: "CTheOneFactory::createDataReader(CDataReaderconfig * config_ptr )"

Oder man könnte für jedes Objekt eine Factory Bauen und eine Vererbung bis zum Interface nachziehen. Ich überlege ob ich diesen ganzen Factory-Objekterzeugungsakt nicht irgendwie vereinfacht bekomme und überlege mir einen Template-Ansatz... aber komme da nicht wirklich weiter. Irgendwo muß am Ende das Objekt auch mal erzeugt werden und eine clevere Lösung fällt mir da nicht ein... immer ist es recht umständlich um es sauber zu haben.

Hat jemand da Ideen wie man es richtig macht?

Kann ich Eigenschaften der Factory auch irgendwie nutzen für die Zerstörung von Objekten? Oder Alternativ gleichen einen "std::shared_ptr" zurückgeben?
:confused:

DANKE!

mekakic
2012-06-01, 15:19:14
Das hier: http://www.drdobbs.com/184403786#1 ... scheint ziemlich genau das zu sein, was ich suche. Ersten Tests nach funktioniert es hervorragend... oder übersehe ich Probleme bei dem Ansatz?