Contesto:
Questo è per una libreria che legge alcuni vecchi formati di giochi che rappresentano modelli 3D.
Chiamiamo questi formati di basso livello PRM1
, PRM2
, PRM3
e PRM4
.
- ciascuno di questi formati contiene
position
,origin
eprimitives
di un modello 3D - hanno minori differenze di implementazione ma alla fine producono lo stesso tipo di contenuto
- al momento tutti implementano un'interfaccia
IModel
da cui i dati vengono letti per produrre grafici
Ora, finisco con i metodi duplicati in ognuno di questi tipi, fanno tutti la stessa cosa:
-
private GetMesh(IPolygon, ...)
-
public GetMesh(...)
chiama sopra il metodo per produrre un modello 3D
Quindi ho pensato perché no ...?
- creando una classe
Model
che implementa direttamenteIModel
, conterrà l'intero processo di generazione di mesh dal momento che è univoco, rimuovendo efficacemente il codice duplicato -
PRM1
,PRM2
,PRM3
ePRM4
deriverebbero quindi daModel
e conterrebbero solo la lettura dal file binario stesso attraverso il punto di ingresso del costruttoreModel(Stream stream)
Anche se questa sembra la strada da percorrere, è strano come ora i tipi di basso livello dipendono da un tipo di alto livello.
Domanda:
È un approccio / modello perfettamente valido o c'è qualcosa che mi manca?