Stel dat je een stream manager hebt en een basisklasse voor een streamable object("Stream"). De manager creëert bijvoorbeeld filestreams en netwerk streams en geeft dan aan de gebruiker een stream pointer door waar deze mee kan werken. De gebruiker krijgt dus steeds een stream pointer en dus nooit iets als een file stream pointer om mee te werken.
Het probleem is als volgt:
De stream manager kent wel al bepaalde stream types (file, udp in, udp out, tcp in, tcp out, etc), maar ik zou graag ervoor zorgen dat er at runtime nog types kunnen worden geregistreerd. Zoiets als:
StreamManager::RegisterStreamType("http", HttpStream)
Waarbij http de benaming is (je vraagt dus een stream van dit type op dmv "http://adres" te openen via de stream manager) en HttpStream de klasse is waaruit objecten van dit type moeten worden gecreëerd. HttpStream moet natuurlijk afgeleid zijn van Stream, net als FileStream en de andere afgeleide klassen (die reeds intern zouden worden aangemeld via RegisterStream).
Het probleem is als volgt:
De stream manager kent wel al bepaalde stream types (file, udp in, udp out, tcp in, tcp out, etc), maar ik zou graag ervoor zorgen dat er at runtime nog types kunnen worden geregistreerd. Zoiets als:
StreamManager::RegisterStreamType("http", HttpStream)
Waarbij http de benaming is (je vraagt dus een stream van dit type op dmv "http://adres" te openen via de stream manager) en HttpStream de klasse is waaruit objecten van dit type moeten worden gecreëerd. HttpStream moet natuurlijk afgeleid zijn van Stream, net als FileStream en de andere afgeleide klassen (die reeds intern zouden worden aangemeld via RegisterStream).