Separa oggetti disegnabili e i loro dati

0

Sto cercando un modo per progettare la mia applicazione. Supponi di avere una cosa da disegno per le auto. L'auto ha più parti. Alcune saranno visibili, altre no. Per esempio la batteria dovrebbe essere disegnata. Quindi qualcuno creerebbe una batteria di classe. Alcuni altri dati, come i test di garanzia passati, ecc. Non saranno disegnati. Il mio problema è che voglio separare i dati tecnici dall'oggetto da disegnare. Ad esempio, la batteria ha tonnellate di specifiche tecniche (capacità, temperatura bassa / massima, ecc.) Così ad esempio leggo i dati da un file che ha tutti i dati sia tecnici che di altro tipo il colore ecc e trasforma questi dati in oggetti. Poi voglio aggiungerli a una tela per essere disegnato. Comunque non tutti gli oggetti devono essere disegnati. Il problema qui è che ad esempio non voglio mettere in una classe componenti specifici come il renderer come la batteria.
L'unica soluzione a cui riesco a pensare è quella di creare un'altra classe per ogni drawable come BatteryObject. Tuttavia, ciò significa che un altro oggetto dovrebbe essere istanziato e la cancellazione, ecc. Sarà un problema. C'è qualche altro approccio?

    
posta GorillaApe 21.02.2015 - 20:01
fonte

1 risposta

1

La risposta alla tua domanda dipenderà molto dalla misura in cui i tuoi "dati" devono essere "intelligenti".

Ad esempio, se si desidera semplicemente visualizzare le specifiche sullo schermo, è sufficiente fornire i dati come una raccolta di attributi senza tipo. Ad esempio:

var attributes = new list<KeyValuePair<string, string>>();

Se, d'altra parte, la tua batteria fa parte di un sistema elettrico che potresti voler analizzare in un secondo momento, i tuoi dati non dovrebbero essere solo valori numerici effettivi, ma dovrai anche conoscere le unità, poiché la corrente è trattato diversamente dalla tensione e il calibro dei fili assume una certa rilevanza, ecc.

Alcuni attributi hanno vincoli. Le batterie al piombo-acido sono diverse dalle batterie agli ioni di litio (sebbene siano entrambe le batterie), ma esistono solo un numero limitato di tipi di batteria, quindi potresti voler limitare l'input a un elenco di tipi noti. L'ultima volta che ho controllato, non è possibile inserire un modulo punto zero in un'automobile.

Se vuoi ancora rappresentare le tue specifiche come proprietà di oggetti di prima classe nella tua classe di batteria, C # ti permette di decorare quelle proprietà con un Attributo che ti consentirà di identificarli come "specifiche del prodotto".

[Specification]
public float AmpHours { get; set; }
    
risposta data 21.02.2015 - 22:06
fonte

Leggi altre domande sui tag