요즘 푹 빠진 게임이 있다.
샌드박스에서 나온 알비온 온라인이라는 게임인데, 이 게임은 맥이든 아이폰이든 아이패드든, 윈도우든 리눅스든 모든 곳에서 호환이 되는 게임이라고 홍보를 한다.
나도 실제로 아이패드로 자주 하고, 가지고 있는 윈도우 노트북으로도 하고 있다.
그런데 만약?
내가 아이패드로 할 때의 설정과 윈도우로 할 때의 설정이 다르다면 어떻게 될까?
한마디로 매우 불편할 것이다.
즉, 기기는 달라도 내가 윈도우에서든, 아이패드에서든 어디서든 설정창을 열게 되면 나에게 보여지는 설정창은 '하나'여야만 한다.
말 그대로 각자 새로운 객체가 아닌 하나 여야 된다는 것.
이런 상황일 때 필요한 것이 싱글톤 패턴 (Singleton Pattern) 이다.
// 클래스를 하나 만든다고 가정해보자
public class Setting {
private static Setting instance; // 외부에서 접근할 수 없는 하나의 인스턴스 변수를 선언해두고
private Setting() {}; // 외부에서 Setting 클래스의 객체 생성이 불가능 하게끔 하기 위해 private 생성자
public static Setting getInstance() {
if (instance == null) { // 선언한 인스턴스 변수가 초기화가 되지 않았을때
instance = new Setting(); // 초기화 하여 객체 생성!
} // 인스턴스 변수가 이미 초기화가 된 상태라면 해당 객체를 반환하여 같은 인스턴스 객체를 반환하게 된다.
return instance; // 해당 객체를 반환한다.
}
}