본문 바로가기
프로그래밍 놀이터/디자인 패턴, 리펙토링

[Effective Java] private 생성자나 enum 타입을 사용해서 싱글톤의 특성을 유지하자.

by 돼지왕 왕돼지 2015. 2. 25.
반응형

 [Effective Java] private 생성자나 enum 타입을 사용해서 싱글톤의 특성을 유지하자.


1.5, CLASS, Effective JAVA, enum, Factory, instance, private 생성자, private 생성자나 enum 타입을 사용해서 싱글톤의 특성을 유지하자., public static, Singleton, 싱글톤, 인스턴스, 자동, 직렬화


-

싱글톤(singleton) 은 정확히 하나의 인스턴스만 생성되는 클래스.



-

기존에 싱글톤을 구현하는 구현하는 방법은 2가지.

1. 생성자를 private 으로 하고, 유일한 인스턴스에 접근할 수 있도록 public static 맴버를 외부에 제공.

2. 위와 조건은 같지만 member 변수를 public 으로 하는 대신 factory 메소드를 통해 instance 를 전달한다.


2번의 방법은 factory 메소드의 장점을 함께 갖기 때문에 조금 더 좋은 방법이다.

( 조건에 따라 다른 instance 를 return 할 수 있다. )


위의 두가지 방법은 해당 class 를 직렬화 할 때 손이 많이 간다.

( 직렬화 방법에 대해서는 기술하지 않겠다.. )



-

1.5 이후 버전에서는 enum 을 이용하는 방법이 가장 좋은 싱글톤이다.

public enum SingletonClass{

INSTANCE;

...


private int mInt;

private SingletonClass(){

...

}

public void doSth(){

...

}

}


위에 명시한 1번과 기능은 같으면서, 직렬화가 자동으로 지원되며, 인스턴스가 여러 개 생기지 않도록 확실하게 보장해준다.

널리 적용되진 않았지만 싱글톤을 구현하는 가장 좋은 방법!!






반응형

댓글