싱글톤을 만드는 또 하나의 방법 :)

싱글톤을 만들 때 Xxx Holder, Enum으로 만들어버리기 (이펙티브 자바) 등등… 다양한 전략이 있다.

어느 날… 필자는 하나의 생각이 떠올렸다.

아니 왜 Abstract 클래스로는 안 만든다는 거지…? 이 친구도 new 연산 못하잖아!

그래서 만들어 버렸다…!!

국내 최초 Abstract Class 싱글톤 !

abstract class AbstractSingleton {

    private static ConcreteSingleton singleton;

    public static AbstractSingleton newInstance() {

        if (singleton == null) {
            singleton = new ConcreteSingleton();
        }

        return singleton;
    }

    static class ConcreteSingleton extends AbstractSingleton {

        private static int myCount = 0;

        public ConcreteSingleton() {
            myCount++;
        }

        public String introduceMe() {
            if (myCount >= 2) {
                throw new RuntimeException("어이쿠 ! 제 자신이 두 개 생성돼 버렸네요... 이런 일은 있을 수 없는데!!");
            }
            System.out.printf("안녕 난 싱글톤이얌 ^^ 내가 생성된 갯수는 %d 야 \n", myCount);
            System.out.println("만일 내가 2개 이상이라면 이 문장이 실행되지 않겠지?? ^^");
        }
    }
}

조금 민망하지만 위에 코드가 전부이다… :)




© 2020.12. by 따라쟁이

Powered by philz