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!
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!