Java/패스트캠퍼스
싱글톤 패턴
hs_developer
2022. 5. 30. 21:33
싱글톤 패턴이란?
프로그램에서 인스턴스가 한 개만 생성되어야 할 때 사용하는 디자인 패턴
static 변수, 메서드 이용해 구현
싱글톤 패턴으로 회사 객체 구현하기
Company@5ca881b5
Company@5ca881b5
public class Company {
// 클래스 내부에 유일한 private 인스턴스 생성
private static Company instance = new Company();
// 생성자는 private로 선언
private Company() {
}
// 외부에서 유일한 인스턴스를 참조할 수 있는 public 메소드 제공
public static Company getInstance()
{
if(instance == null)
{
instance = new Company();
}
return instance;
}
public static void main(String[] args) {
Company company1 = Company.getInstance();
Company company2 = Company.getInstance();
System.out.println(company1);
System.out.println(company2);
}
}
설명에 따른 객체를 구현해 테스트 코드 실행시키기
자동차 공장이 있다. 자동차 공장은 유일한 객체이고, 이 공장에서 생산되는 자동차는 제작될 때마다 고유의 번호가 부여된다. 자동차 번호가 10001부터 시작되어 자동차가 생산될 때마다 10002, 10003 이렇게 번호가 붙도록 공장 클래스, 자동차 클래스를 구현한다.
10001
10002
public class Car {
private static int serialNum = 10000;
private int carNum; // 차 번호는 고유 값이니까
public Car()
{
serialNum++;
carNum = serialNum;
}
public int getCarNum() {
return carNum;
}
public void setCarNum(int carNum) {
this.carNum = carNum;
}
}
public class CarFactory {
private static CarFactory instance = new CarFactory();
private CarFactory() {
}
public static CarFactory getInstance()
{
if(instance == null)
{
instance = new CarFactory();
}
return instance;
}
public Car createCar()
{
Car car = new Car();
return car;
}
}
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()); // 10001
System.out.println(yourSonata.getCarNum()); // 10002
}
}