개발/Java
[Java] 싱글톤(singleton)
suniverse
2023. 1. 31. 23:32
- 애플리케이션이 시작될 때 어떤 클래스가 최초 한번만 메모리를 할당하고
그 메모리에 인스턴트를 만들어 사용하는 디자인 패턴
- 일반적으로 자바에서는 생성자를 private로 선언해서 생성 불가능하게 하고
getInstance() 메서드 작성해서 객체를 받도록 구현
✍
public class test7 {
public static void main(String[] args) { // 메인 메서드
Car c1 = Car.getInstance();
Car c2 = Car.getInstance();
System.out.println(c1 == c2);
}
}
class Car { // 클래스
// 3. getInstance() 메서드를 호출할 때마다 new Car()로 객체를 생성하게 되면
// 결국 Car 객체가 여러개일 수 있으므로 Car 타입 변수 car를 선언
private static Car car;
// 1. 외부에서 객체를 생성할 수 없도록 생성자 private 처리
private Car() {}
// 2. Car 객체를 리턴할 getInstance() 메서드를 선언
static Car getInstance() {
if(car == null) {
car = new Car();
}
return car;
}
}
-->
3. getInstance() 메서드에서 car 변수를 리턴해야 하는데 getInstance() 메서드가 static 이므로 멤버변수는 접근 불가!
따라서, car 변수도 static으로 선언하고 외부에서 조작할 수 없도록 private 처리