일단 정처기 공부하면서도 나왔던 것 같은데 어쨌든 면접 질문에 빡쳐서 또 공부한다. 🤬 생각할 수록 빡친다. 디자인 패턴 1 싱글톤 패턴을 먼저 시작해본다.
예를 들어서 3명의 클라이언트가 있다고 가정한다. 각각의 클라이언트는 어떤 어플리케이션을 실행한다. 이때 이 어플리케이션 내부의 서비스 로직 중 어떤 것이 호출되는데 3명이 실행하고 호출하면 당연히 3번의 서비스 로직의 인스턴스가 생성되고 호출된다. 그럼 만약 100명이 호출한다면?
싱글톤 패턴은 이런 무분별한 인스턴스의 메모리 낭비를 방지하기 위해서 나온 것이다. 이제 코드를 통해 알아본다.
2. 본론
1) 싱글톤 패턴 코드
package hello.core.singleton;
public class SingletonService {
private static final SingletonService instance = new SingletonService();
public static SingletonService getInstance() {
return instance;
}
private SingletonService() {
}
/*public SingletonService(int a) {
}*/
public void logic() {
System.out.println("이게 바로 싱글톤이다. 새퀴들아!!!");
}
}
위의 코드 첫번째 라인을 보시면 private static final로 되어 있다.
이는 static 메모리 영역에 올라가는데 프로그램의 시작 ~ 종료될 때 까지 메모리에 남아있기 때문에 static을 붙이며 상수로써 final을 붙여 바꿀 수 없게끔 한다. 즉, 모든 영역에 고정된 값으로 쓰겠다는 의미이다.
싱글톤패턴은 외부에서 new 객체를 통해 인스턴스 호출하는 것도 막아야함으로 기본 생성자를 private로 바꿔놓는다.