본문 바로가기
공부/이펙티브자바

[이펙티브 자바]item3.private 생성자나 열거 타입으로 싱글턴임을 보장하라

by 띵커베르 2023. 1. 11.
728x90
  • 싱글톤은 만드는 방식은 많다.DCL 방식의 싱글톤 또는 enum 싱글톤을 이용하자.
  • 물론 싱글톤의 단점도 존재한다. 테스트보기가 힘들다.
    • mock 객체를 사용하려면 해당 객체가 인터페이스를 구현하고 있어야 함.
  • 자바 싱글톤과 스프링의 싱글톤은 다르다.
    • 자바는 클래스로더에 의해서 만들어지고, 스프링은 스프링 컨테이너 (applicationContext)에 의해서 구현된다
  • 역직렬화 할때 직렬화 == 역직렬화 비교를하면 false 일텐데, 이를 true 로 나오게끔 하고싶으면
    • override 는 아니지만,,그렇다고 override 가 아니라고 말하기도 뭐한 코드를 넣어야한다
    • 아래코드는 @override 가 아님.하지만 역직렬화 할때 사용은 함.
private Object readResolve() {
	return INSTANCE;
}

 

 

 

코틀린은 object 키워드를 사용. by lazy 도 참고.

 

 

728x90

댓글