Ho un paio di classi di oggetti semplici per rappresentare i dati letti da un file. Sembrano qualcosa del genere:
public class Command {
private String name;
private List<Message> messages;
}
public class Message {
private Type type;
private Map<String, Object> params;
}
con getter e setter per le variabili. Tuttavia, non ero sicuro di come esporre l'elenco messages
o la mappa params
. All'inizio volevo avere un getter che restituisca solo la lista o la mappa, per evitare di dover scrivere una serie di metodi add / remove / iterate per ogni elenco o mappa. Gli oggetti di raccolta hanno questi metodi e molti altri, quindi è sembrato più conveniente restituire solo quegli oggetti. Tuttavia, ho anche gli oggetti per sapere quando i dati sono cambiati, in modo che una vista possa essere aggiornata di conseguenza, o per tenere traccia di se un particolare file è stato modificato e deve essere salvato. Ciò significa che dovrei implementare delegati per aggiungere / rimuovere / iterare / keyset / entrySet / etc per quei campi, ma aggiungere molti metodi extra e rendere il codice molto meno conveniente. Qual è la migliore pratica qui, quando si tratta di oggetti semplici che possono avere elenchi, mappe, insiemi, ecc. In essi, oltre a poter sapere quando i dati sono cambiati?
Ho anche avuto una domanda correlata riguardante se un oggetto figlio dovrebbe avere un riferimento all'oggetto che lo ha creato. Ci stavo pensando perché nel caso in cui un oggetto Message
è stato modificato, in che modo il suo oggetto% gen_de% sa di tale modifica? Se la classe Command
ha eventi a cui Message
si abbona con gli ascoltatori, o se l'oggetto Command
ha un riferimento all'oggetto Message
in cui è contenuto, e chiama un metodo / imposta un campo in quel Command
oggetto quando i dati vengono modificati? Qual è la migliore pratica qui, o dovrei cambiare completamente il modo in cui i dati dei file vengono archiviati come oggetti?