Un tipo di basso livello può dipendere da un'astrazione di alto livello?

0

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 e primitives 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 direttamente IModel , conterrà l'intero processo di generazione di mesh dal momento che è univoco, rimuovendo efficacemente il codice duplicato
  • PRM1 , PRM2 , PRM3 e PRM4 deriverebbero quindi da Model e conterrebbero solo la lettura dal file binario stesso attraverso il punto di ingresso del costruttore Model(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?

    
posta Aybe 13.07.2017 - 20:10
fonte

1 risposta

0

Ho appena provato e sembra che sia stata una buona mossa,

  • Ho rimosso molti codici ridondanti
  • i luoghi in cui guardare sono ora ridotti a uno solo
  • i tipi concreti riguardano solo la lettura dei dati, la classe base esegue la trasformazione
  • Il rendering
  • non si è interrotto
  • ha funzionato immediatamente
  • più generalizzazione
  • ecc.

Di conseguenza ho bisogno di alcuni "costruttori" per astrarlo ulteriormente ma questo è un buon compromesso IMO.

    
risposta data 13.07.2017 - 23:12
fonte

Leggi altre domande sui tag