본문 바로가기
개발/Spring

싱글톤 LazyHolder 적용해보기

by meanjung 2023. 8. 3.
public class Main {

    public static void main(String[] args) {
        Obj.Method1();
        Obj.Method2();
        Obj.Method2();
        Obj.Method1();
    }

}
public class Member {
    private String name;
    private String text;

    public Member(String name, String text) {
        this.name = name;
        this.text = text;
    }
}
public class Obj {
    
    static class Inner{
        private static final Member member = new Member("민정", "굿");
    }

    private static Member newMember(){
        return Inner.member;
    }

    public static void Method1(){
        System.out.println(newMember());
    }

    public static void Method2(){
        System.out.println(newMember());
    }

}

 

 

 

 

 

만약 Obj 클래스가 다음과 같으면 싱글톤이 아니라, 다 다른 멤버 객체가 리턴된다.

public class Obj {


    public static Member newMember(){
        return new Member("민정", "굿");
    }

    public static void Method1(){
        System.out.println(newMember());
    }

    public static void Method2(){
        System.out.println(newMember());
    }

}

 

즉, 메서드가 static이라고 리턴하는 객체가지 똑같을 거라고 생각하면 오산이다.

댓글