본문 바로가기

Backend/Java

Singleton 패턴

싱글톤(Singleton) 패턴이란? 

: 전 시스템에 단 하나의 인스턴스만이 존재하도록 구현하는 방식(ex.회사이름 등)

 

어떻게 구현하는가(in Java)?  

  1. 자바는 글로벌 변수가 없다 : static 변수 사용
  2. 생성자가 없으면 public default 생성자가 생성된다. : 생성자를 private으로 만듦
  3. 외부에서 생성된 static으로 생성된 객체를 사용할 수 있어야 한다 : public으로 선언된 static 메서드 제공

연습(자동차 공장)

Car.java

package singleton;

public class Car {
	
	private static int serialNum = 10000; 
	int carNum;
	
	public Car () {
		serialNum++;
		carNum = serialNum;
	}

	public int getCarNum() {
		return carNum;
	}

	public void setCarNum(int carNum) {
		this.carNum = carNum;
	}
	
}

CarFactory.java

package singleton;

public class CarFactory {
	private static CarFactory instance = new CarFactory(); // private으로 인스턴스 생성
	
	private CarFactory() {} // private으로 생성자 생성
	
	public static CarFactory getInstance() {  // 외부에서 쓸 수 있도록 public static으로 메소드 생성
		return instance;
	}
	public Car createCar() {
		Car car = new Car();
		return car;
	}
}

CarFactoryTest.java

package singleton;

public class CarFactoryTest {

	public static void main(String[] args) {
		
		CarFactory factory = CarFactory.getInstance();
		Car mySonata = factory.createCar();
		Car yourSonata = factory.createCar();
		
		System.out.println(mySonata.getCarNum());
		System.out.println(yourSonata.getCarNum());
		
	}

}

// 결과값
// 10001
// 10002

출처:Do it 자바프로그래밍 입문(인프런 강의)

'Backend > Java' 카테고리의 다른 글

랜덤 숫자 맞히기(do - while문)  (0) 2022.06.29
형변환 연습문제  (0) 2022.06.29
2차원 배열 연습  (0) 2022.06.23
[클래스와 객체] Date is Valid?  (0) 2022.06.21
반복문으로 별찍기  (0) 2022.06.20