Ho letto alcuni articoli/post riguardanti l'uso di getter e setter e come aiutano a sconfiggere lo scopo dell'incapsulamento negli oggetti del modello di dominio. Comprendo la logica alla base del non utilizzo dei setter: si consente al codice client di manipolare gli attributi di tale oggetto, al di fuori del contesto delle regole e degli invarianti di business dell'oggetto.DDD e uso di getter e setter
Ora questo principale mi confonde ancora. Ad esempio, cosa succede se ho bisogno di cambiare il valore di una variabile membro di un oggetto? Ad esempio, se il nome di una persona cambia come posso rifletterlo nel modello? All'inizio ho pensato, beh, perché non ho una funzione chiamata 'ChangeName' che mi permette di passare il nuovo nome e che a sua volta può cambiare la variabile 'name' interna. Beh ... questo è solo un setter, non è vero?
Che cosa ho bisogno di chiarire - se dovessi eliminare completamente i setter, quindi in situazioni come quella di cui sopra, dovrei fare affidamento esclusivamente sui parametri del costruttore? Devo passare il nuovo valore dell'attributo al posto del vecchio valore dell'attributo tramite un costruttore, dopo di che posso mantenere le modifiche passando l'oggetto a qualsiasi infrastruttura di persistenza che dispongo?
Questi due articoli sono utili in questa discussione: