Imutável

Na programação orientada a objetos e funcional, um objeto imutável é um objeto cujo estado não pode ser alterado após ser criado. A API pública de um objeto imutável garante que ele se comportará da mesma maneira durante seu tempo de vida. Em alguns casos, um objeto é considerado imutável mesmo se os atributos usados ​​internamente mudam, mas o estado do objeto parece inalterado de um ponto de vista externo. Abaixo está um exemplo de uma classe básica imutável:

class User {

final privado longo Eu iria;
String final privada nome;

Usuário (longo id Tanga nome) {
esta.id = Eu iria;
esta.nome = nome;
}}

Todos os campos são finais, o que significa que o compilador é informado de que seus valores não devem ser alterados depois de inicializados. Todos os valores de campo são então passados ​​para o construtor.

Benefícios de objetos imutáveis

Como o objeto é imutável, os usuários sabem exatamente o que esperar dele. O código não pode ser alterado, o que significa que não há oportunidade de introduzir inconsistências que podem levar a erros de tempo de execução. Objetos imutáveis ​​são thread-safe, portanto, problemas de sincronização são evitados. Eles são mais fáceis de projetar, implementar e usar do que classes mutáveis.

Depois que um objeto imutável é criado e verificado, nenhum outro thread ou processo de segundo plano será capaz de alterar o objeto sem o conhecimento direto do usuário. Isso é útil para programas que precisam de alta segurança. Quando surge um problema, a depuração é mais fácil com objetos imutáveis ​​porque a origem de um bug pode ser facilmente rastreada.

Objetos imutáveis ​​vs. mutáveis

Enquanto objetos imutáveis ​​não podem mudar seu estado, objetos mutáveis ​​podem. Objetos mutáveis ​​fornecem métodos para alterar o conteúdo de um objeto e não são seguros para thread como objetos imutáveis.

Em Java, exemplos de objetos mutáveis ​​incluem StringBuilder e java.util.Date. Exemplos de objetos imutáveis ​​incluem todas as classes legadas, classes de wrapper e classes de string.

Em Python, exemplos de tipos mutáveis ​​incluem list, dict e set. Os tipos imutáveis ​​em Python incluem int, float, bool, string, unicode e tupla.