Utilizzo di un array come variabile membro in una classe

3

Ho una domanda di stile per progettare una classe per rappresentare un modello reale.

Diciamo che ho Guide che ha PointsOfInterest come membro.

Vorrei fare qualcosa di simile:

class Guide {
    public points: PointsOfInterest[];
}

Questo sembra male, perché diciamo che ho recuperato una guida dal mio back-end. Per aggiungere un POI, lo aggiungo all'array, lo serializzo e lo salvo. Non sono sicuro del perché, ma mi fa sentire a disagio esponendo l'implementazione sottostante in questo modo.

Tuttavia, sembra super extra fare qualcosa di simile

class Guide {
    public addPointOfInterest(poi: PointOfInterest): boolean;
    public removePointOfInterest(idOfPoi: string): boolean;
    public iterateOnPointsOfInterest((poi: Poi) => any): boolean;
}

Penso che sto pensando troppo a questo, ma ritengo che questa sia una domanda di design molto comune e sarebbe bello puntare su risorse in cui posso imparare a conoscere i modelli per la modellazione dei dati.

Inoltre, ho letto delle strutture di dati immutabili e mi chiedevo come funzionerebbe qui.

    
posta Vishaal Kalwani 29.06.2017 - 00:50
fonte

1 risposta

1

Cosa succede se scrivo codice che aggiunge un punto di interesse? Dovresti salvare queste informazioni da qualche parte? Accadrà se aggiungo il punto? Cosa dovrei fare per aggiungere un punto di interesse e assicurarmi che questo sia elaborato correttamente?

I tuoi due metodi addPoint, removePoint vanno bene. Invece di iterare, potresti avere un metodo che restituisce una copia dell'array punti (quindi se c'è un accesso multi-thread, il chiamante sa che ottiene una copia valida al momento della chiamata ma che potrebbe non essere l'ultima dichiarare un millisecondo dopo). Il chiamante può eseguire l'iterazione autonomamente, ma è più flessibile. E ovviamente questo non significa che devi implementarlo internamente come array; è affar tuo.

    
risposta data 29.06.2017 - 11:40
fonte

Leggi altre domande sui tag