singleton design pattern vs static class

공용 데이터를 저장하여 사용하고자 할 때, singleton design pattern이나 내부 static class를 사용한다.

싱글톤 패턴 (Singleton design pattern) -싱글톤 패턴이란 single instance object(해당 클래스의 인스턴스 하나)가 만들어지고, 어디서든지 그 싱글톤에 접근할 수 있도록 하기 위한 패턴

public final class SiteStructureSingletonPattern {
private Object[] data = new Object[10];
private static SiteStructureSingletonPattern instance = new SiteStructureSingletonPattern();

private SiteStructureSingletonPattern() {
System.out.println(“SiteStructureSingletonPattern constructor”);
for(int i=0; i<10; i++) {
data[i] = i+1;
}
}

public static SiteStructureSingletonPattern getInstance() {
return instance;
}

public void print() {
System.out.print(“SiteStructureSingletonPattern data=”);
for(int i=0; i<10; i++) {
System.out.print(” ” + data[i]);
}
System.out.println();
}
}

 

public class SiteStructureStaticClass {
private Object[] data = new Object[10];
private SiteStructureStaticClass() {
System.out.println(“SiteStructureStaticClass constructor”);
for(int i=0; i<10; i++) {
data[i] = i+1;
}
}

private static class SiteStructureStatic {
private static final SiteStructureStaticClass instance = new SiteStructureStaticClass();
}

public static SiteStructureStaticClass getInstance() {
return SiteStructureStatic.instance;
}

public void print() {
System.out.print(“SiteStructureStaticClass data=”);
for(int i=0; i<10; i++) {
System.out.print(” ” + data[i]);
}
System.out.println();
}
}

public class StaticClassSingletonPatternTest {

public static void main(String[] args) {
SiteStructureSingletonPattern instance = SiteStructureSingletonPattern.getInstance();
instance.print();
instance = SiteStructureSingletonPattern.getInstance();
instance.print();

SiteStructureStaticClass instance2 = SiteStructureStaticClass.getInstance();
instance2.print();
instance2 = SiteStructureStaticClass.getInstance();
instance2.print();
}

}