자바/개념

[java] 싱글톤 패턴 응용

drCode 2021. 1. 26. 14:32
728x90
반응형

안녕하세요.

이번 포스팅은 싱글톤 패턴 응용입니다.

 

싱글톤 패턴 만드는 방법

(1) private으로 생성자 만들기

(2) static으로 생성자를 메모리에 적재

(3) 메소드(반환형 : class) getInstance를 통해 접근하기

 

자동차 공장이 있고, 자동차를 만드는 작업을 할 겁니다.

 

자동차 공장을 싱글톤 패턴으로 구현하고,

자동차 고유번호를 자동차 공장에서 부여하는 걸로 하겠습니다.

 

먼저 자동차 클래스를 만들어줍니다.

package singleton;

public class Car {
	private int carNum;
	
	public Car() {}
	
	public void setCarNum(int carNum) {
		this.carNum = carNum;
	}
	
	public int getCarNum() {
		return carNum;
	}
}

getter와 setter를 생성해주세요.

 

다음은 자동차공장을 만듭니다.

package singleton;

public class CarFactory {
	private static CarFactory instance = new CarFactory();
	private CarFactory() {};
	private static int serialNum = 10001;
	
	public Car createCar() {
		Car temp = new Car();
		temp.setCarNum(serialNum);
		serialNum++;
		return temp;
	}
	
	public static CarFactory getInstance() {
		return instance == null ? new CarFactory() : instance;
	}
}

serialNum 변수를 자동차 공장이 가지고 있어야

자동차번호를 겹치지 않게 부여할 수 있습니다.

 

다음은 출력을 위한 Test클래스입니다.

package singleton;

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

 

이것을 출력하면,

겹치지 않게 나옵니다.

 

이상으로 포스팅을 마치겠습니다.

 

감사합니다.

728x90
반응형