Immutabile

Nella programmazione orientata agli oggetti e funzionale, un oggetto immutabile è un oggetto il cui stato non può essere modificato dopo che è stato creato. L'API pubblica di un oggetto immutabile garantisce che si comporterà allo stesso modo durante la sua vita. In alcuni casi, un oggetto è considerato immutabile anche se gli attributi utilizzati internamente cambiano ma lo stato dell'oggetto appare invariato da un punto di vista esterno. Di seguito è riportato un esempio di una classe immutabile di base:

utente di classe {

finale privata Long id;
stringa finale privata nome;

Utente (Long id Corda Nome) {
Questo.id = id;
Questo.Nome = nome;
}}

Tutti i campi sono finali, il che significa che al compilatore viene detto che i loro valori non devono cambiare una volta inizializzati. Tutti i valori di campo vengono quindi passati al costruttore.


Benefici immutabili dell'oggetto

Poiché l'oggetto non è modificabile, gli utenti sanno esattamente cosa aspettarsi da esso. Il codice non può essere modificato, il che significa che non è possibile introdurre incongruenze che potrebbero portare a errori di runtime. Gli oggetti immutabili sono thread-safe, quindi si evitano problemi di sincronizzazione. Sono più facili da progettare, implementare e utilizzare rispetto alle classi modificabili.

Una volta creato e verificato un oggetto immutabile, nessun altro thread o processo in background sarà in grado di modificare l'oggetto senza la conoscenza diretta dell'utente. Ciò è utile per i programmi che richiedono un'elevata sicurezza. Quando si verifica un problema, il debug è più facile con oggetti immutabili perché l'origine di un bug può essere facilmente rintracciata.


Oggetti immutabili vs oggetti mutabili

Mentre gli oggetti immutabili non possono cambiare il loro stato, gli oggetti mutabili sì. Gli oggetti mutabili forniscono metodi per modificare il contenuto di un oggetto e non sono thread-safe come gli oggetti immutabili.

In Java, esempi di oggetti modificabili includono StringBuilder e java.util.Date. Esempi di oggetti immutabili includono tutte le classi legacy, classi wrapper e classi stringa.

In Python, esempi di tipi mutabili includono list, dict e set. I tipi immutabili in Python includono int, float, bool, string, unicode e tuple.

Lascia un commento