한 번에 끝내는 Java/Spring 웹 개발 마스터
package com.company.design.singleton;
public class SocketClient {
private static SocketClient socketClient = null;
private SocketClient() {}
public static SocketClient getInstance() {
if(socketClient == null) {
socketClient = new SocketClient();
}
return socketClient;
}
public void connect() {
System.out.println("Connect");
}
}
package com.company.design.singleton;
public class Aclazz {
private SocketClient socketClient;
public Aclazz() {
this.socketClient = SocketClient.getInstance();
}
public SocketClient getSocketClient() {
return this.socketClient;
}
}
package com.company.design.singleton;
public class Bclazz {
private SocketClient socketClient;
public Bclazz() {
this.socketClient = SocketClient.getInstance();
}
public SocketClient getSocketClient() {
return this.socketClient;
}
}
package com.company.design;
import com.company.design.singleton.Aclazz;
import com.company.design.singleton.Bclazz;
import com.company.design.singleton.SocketClient;
public class Main {
public static void main(String[] args) {
Aclazz aclazz = new Aclazz();
Bclazz bclazz = new Bclazz();
SocketClient aClient = aclazz.getSocketClient();
SocketClient bClient = bclazz.getSocketClient();
System.out.println("두 개의 객체가 동일한가?");
System.out.println(aClient.equals(bClient));
}
}
싱글톤 패턴은 자바에서 배웠듯이 디자인 패턴중의 하나이고, 자기 자신을 객체로 갖기 위해서
private SocketClient() {}
public static SocketClient getInstance()
라는 부분이 반드시 필요하다!