바닥부터 시작하는 프로그래밍/국비JAVA

14일차_4 (싱글톤 패턴 코드)

예얀 2024. 3. 22. 16:44
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;
	}
	
	// 즉, 메서드의 메모리의 값이 변하지 않게 만든게 싱글톤패턴임 
	// 메모리가 딱 한번만 생성됨.
		
	
}