🖥️
Padrões de Projeto
  • Padrões de Projeto
  • Orientação a Objetos
    • Conceitos básicos de orientação a objetos
      • Objetos e classes
      • Encapsulamento
      • Relacionamentos
      • Herança
      • Realização
      • Polimorfismo
      • Imutabilidade
  • Princípios SOLID
    • Introdução
    • SRP - Princípio de Responsabilidade Única
    • OCP - Princípio de Aberto/Fechado
    • LSP - Princípio de Substituição de Liskov
    • ISP - Princípio de Segregação de Interfaces
    • DIP - Princípio de Inversão de Dependência
  • Padrões de Projetos e catálogos
    • Introdução
  • Padrões Comportamentais
    • Padrão Strategy
    • Padrão State
    • Padrão Observer
    • Padrão Chain of Responsibility
    • Padrão Command
    • Padrão Template Method
    • Padrão Null Object
  • Padrões Criacionais
    • Padrão Singleton
    • Padrão Prototype
    • Padrão Builder
    • Padrões Factory
      • Factory Method
      • Abstract Factory
  • Padrões Estruturais
  • Padrão Adapter
  • Padrão Facade
  • Padrão Decorator
  • Padrão Proxy
  • Padrão Bridge
  • Padrão Composite
Powered by GitBook
On this page

Was this helpful?

  1. Orientação a Objetos
  2. Conceitos básicos de orientação a objetos

Imutabilidade

Objetos imutáveis são aqueles que suas instâncias não podem ter seu estado alterado após terem sido criadas e nem mudam durante a aplicação. Exemplos de classes imutáveis se encontram de maneira abrangente nas bibliotecas nativas do Java, como na própria classe String:

String nome = "Diogo Moreira ";
System.out.println(nome); // Imprime "Diogo Moreira " com espaço;
nome.trim(); // Esse método "corta" espaços no fim e no começo de uma String
System.out.println(nome); // Imprime "Diogo Moreira " com espaço;

O exemplo de código acima parece "não funcionar", mas na verdade, funciona. O que acontece é que String é imutável, e nenhum de seus métodos pode alterar o seu estado. Ao invés disso, trim() retorna uma nova String a partir das modificações propostas pelo método.

Para que um objeto seja considerado imutável, em Java, ela deve seguir as seguintes características:

  • Métodos não podem modificar seu estado

  • Definida como final

  • Atributos devem ser privados e final

Um exemplo de classe imutável em Java:

public final class Aluno {
  private final String nome;
  
  public Aluno(String nome){
    this.nome = nome;
  }
  
  public String getNome() {
    return this.nome;
  }
}

PreviousPolimorfismoNextIntrodução

Last updated 1 year ago

Was this helpful?

Caso sua classe tenha composição com objetos mutáveis, eles devem ter acesso exclusivo pela sua classe, devolvendo .

cópias defensivas