Devo essere in grado di caricare, utilizzare e liberare risorse da un singolo oggetto monolitico. Ho due requisiti: 1. Che la risorsa caricata è di proprietà dell'oggetto che lo ha creato e 2. Tutti gli oggetti in un "frame" (dove un certo insieme di risorse sono richieste in un dato momento) possono essere liberate contemporaneamente, piuttosto rispetto alle singole risorse.
Tuttavia, il sistema "frame" di cui sto parlando potrebbe essere implementato, da quello che vedo, in due modi diversi. Non posso dare molti esempi di codice a causa della loro dimensione, ma lascia che ti spieghi ulteriormente:
- Puntatori. Chiedendo il "motore" (l'istanza monolitica per il caricamento e l'archiviazione delle risorse) per creare un "frame" e restituire un puntatore all'istanza. Il puntatore "frame" avrebbe un'interfaccia per caricare determinate risorse in memoria e tenerle per l'uso. Quindi, in un secondo momento è possibile chiamare una funzione per chiedere al "motore" di rilasciare l'istanza del frame passandogli il puntatore (e qualsiasi risorsa successiva che è stata caricata nel "frame" o nella cache per un successivo riutilizzo ).
Sembrerebbe:
IResourceFrame *frame = engine.openFrame(); //Create a frame and return a pointer to an interface
const Resource *resource = frame->loadResource(); //Load the resource from the frame
//Use resource
engine->closeFrame(frame); //Deletes frame and all of it's resources (or caches them)
- ID. Chiedendo il "motore" per un ID, quindi chiama qualsiasi funzione nel motore per caricare e utilizzare le risorse che vuoi con l'ID come primo argomento, quindi quando hai finito chiama una funzione che passa l'ID che dice al "motore" può rilasciare qualsiasi risorsa associata a quell'ID.
Sembrerebbe:
int frameid = engine.openFrame(); //Create a frame and return an ID
const Resource *resource = engine.loadResource(frameid); //Load a resource from the engine using the id
//Use resource
engine.closeFrame(frameid); //Deletes frame and all of it's resources (or caches them)
Il motivo per cui questo è necessario in primo luogo è spostare alcune risorse da oggetti specifici e in uno solo, ma sto cercando semplicemente di creare un'interfaccia elegante per questo. Qualsiasi input è apprezzato.