Java Efetivo Essencial - 싱글톤

um singleton com um construtor privado ou um tipo enum에 대한 소유권을 구현합니다.



Esta é uma série baseada no entendimento de tópicos relacionados ao livro com foco no resumo.

엔텐덴도...

Singleton é um design pattern utilizado para instanciar uma única vez uma classe durante o ciclo de vida da aplicação.
싱글톤 객체의 예는 자바 열거형과 Beans do Spring을 사용하지 않고 싱글톤에서 사용할 수 있는 객체입니다.
싱글톤은 실행 대상/기능의 기능인 응용 프로그램의 개체를 나타냅니다.

코모?

Duas formas mais comuns de se criar um Singleton envolvem manter seu construtor privado e ter seus atributos como estáticos publicos para que seja permitido o acesso a instância única.

예시 A

public class CalculadoraDeMateriais {
  public static final CalculadoraDeMateriais INSTANCE = new CalculadoraDeMateriais();

  private CalculadoraDeMateriais() {
  }
}


아텐상

Apesar de garantirmos que somente uma única instância seja invocada no exemplo A, um cliente com privilégios pode utilizar o método AccessibleObjet.setAccessible para acessar o construtor privado então para nos precavermos para essa possibilidade utilizamos o exemplo B, onde garantimos que acasstao jâna que seja lançada 예외.

예시 B

public class CalculadoraDeMateriais {

  private static final CalculadoraDeMateriais INSTANCE=
          new CalculadoraDeMateriais();

  private CalculadoraDeMateriais() {
    if (INSTANCE != null) {
      throw new IllegalStateException();
    }
  }

  public static CalculadoraDeMateriais getInstance() {
    return INSTANCE;
  }
}


더 많은 정보...
  • Abordagem do campo público deixa bem claro que o objeto é um singleton.
  • Podemos utilizar junto com o static factory pois isso permite flexibilidade futura caso não queira mais que seja um singleton.
  • Mas a maioria dos casos onde queremos usar um objeto como singleton podemos utilizar Enums que são classes que possuem atributos e métodos e possuem uma única instância em tempo de execução.
  • Singleton como mostrado nos exemplos acima é pouco 보통 hoje em dia e é mais difícil de testar.
  • Beans가 Spring을 사용하는 가장 좋은 방법은 Testar 테스트에서 Singleton이 사용하는 테스트의 예입니다.
  • Casos mais comuns hoje em dia que utilizamos no código e que funciona super bem são os Enums.
  • 좋은 웹페이지 즐겨찾기