Molto spesso, utilizzo un design simile ad un adattatore per esporre aspetti diversi degli oggetti dati.
Ad esempio, in un'applicazione di modellazione 3D uso una gerarchia di oggetti per rappresentare i modelli 3d nella scena. Questa gerarchia contiene molte informazioni interne ed è piuttosto complessa da attraversare.
Per esportare i dati del modello 3D in diversi formati di file (che implica una trasformazione piuttosto significativa e omettere o convertire alcuni oggetti), ho una classe separata chiamata ModelAdapter. Estrae le informazioni importanti di un modello 3D e le fornisce in un formato diverso, utilizzabile per l'esportazione. I plugin di esportazione, a loro volta, leggono i dati dai ModelAdapters e non hanno nulla a che fare con la struttura dei dati di scena interna.
Per esempio:
class 3DModelAdapter
{
private 3DModel internal_model;
public List GetTriangles()
{
internal_model.Do_Some_Complex_Thing_To_Retrieve_The_Triangles();
}
...
}
Questo è un uso valido del modello dell'adattatore? C'è un modo migliore per realizzare la stessa cosa?