싱글톤 패턴이란?
프로그램에서 인스턴스가 한 개만 생성되어야 할 때 사용하는 디자인 패턴
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
10002public 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
	}
}
'Java > 패스트캠퍼스' 카테고리의 다른 글
| 인터페이스 (0) | 2022.06.05 | 
|---|---|
| 추상 클래스 (0) | 2022.06.05 | 
| static 변수, static 메소드 (0) | 2022.05.30 | 
| 패스트캠퍼스 자바 알고리즘 문제 (0) | 2022.05.17 | 
| 패스트캠퍼스 객체 지향 핵심 (0) | 2022.04.09 |