package singleton;
import java.util.Calendar;
public class main {
public static void main(String[] args) {
SomeController sc = SomeController.getInstance();
SomeController sc1 = SomeController.getInstance();
SomeController sc2 = SomeController.getInstance();
sc.test();
Calendar cal = Calendar.getInstance();
}
}
// 클래스의 활용을 공부하고자 한다.
// 키워드: 디자인패턴, SQLID 원칙..
// 책 : 리팩터링, 클린코드, 헤드퍼스트 디자인패턴, GoF (10년 이상된 책들임..)
// 싱글톤 패턴
// 목표: 클래스 기초의 모든 내용이 다 나옴.
// 아래 클래스는 기능이 주가 되는 클래스이다(Dto 아님)
// 원하는 목표: 아래 클래스가 클래스의 인스턴스가 단 한번은생성되어야함. 단, 두번 이상은 생성되면 안됨.
class SomeController{
private int value;
public void test() {
System.out.println(value);
}
// 싱글톤 패턴 코드 시작
// 싱글톤 패턴 코드는 생성자부터 막는다.
private SomeController() {}
// 생성자에 private붙이는 순간 생성이 불가능한 코드가 되어버림
// 생성자 생성이 외부에서만 안될뿐이지 내부에서는 가능 (private 붙이면)
// new SomeController(); 이런식으로
private static final SomeController instance = new SomeController();
public static SomeController getInstance() {
// API활용하다가 getInstance 사용하면
return instance;
}
// 즉, 메서드의 메모리의 값이 변하지 않게 만든게 싱글톤패턴임
// 메모리가 딱 한번만 생성됨.
}