본문 바로가기
Java

[JAVA] 자바 - static 응용 - 싱글톤 패턴

by Seong-Jun 2021. 11. 23.
728x90
반응형
SMALL

싱글톤 패턴이란?

  • 프로그램에서 인스턴스가 단 한 개만 생성되어야 하는 경우 사용하는 디자인 패턴입니다.
  • static 변수, 메서드를 활용하여 구현 할 수 있습니다.

싱글톤 패턴으로 회사 객체 구현하기

  • 생성자는 private로 선언합니다.

Company.java

public class Company {
	
	private static Company instance = new Company();
	
	private Company() {
		
	}
    
	// static으로 선언해야지 외부에서 클래스 이름으로 호출할 수 있다
	public static Company getInstance() {
		if (instance == null) {
			instance = new Company();
		}
		
		return instance;
	}
}

 

CompanyTest.java

//import java.util.Calendar;

public class CompanyTest {

	public static void main(String[] args) {
		Company company1 = Company.getInstance();
		Company company2 = Company.getInstance();
		
		System.out.println(company1);
		System.out.println(company2);
		
//		Calendar calendar = Calendar.getInstance();
	}
}

 

static과 싱글톤 패턴 복습

CarFactory.java

public class CarFatory {
	private static CarFatory instance = new CarFatory();
	
	private CarFatory() { }
	
	public static CarFatory getInstance() {
		if (instance == null) {
			instance = new CarFatory();
		}
		return instance;
	}

	public Car createCar() {
		Car car = new Car();
		
		return car;
	}
}

 

Car.java

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;
	}
}

 

CarFactoryTest.java

public class CarFatoryTest {

	public static void main(String[] args) {
		CarFatory fatory = CarFatory.getInstance();
		
		Car mySonata = fatory.createCar();
		Car yourSonata = fatory.createCar();
		
		System.out.println(mySonata.getCarNum()); // 10001 출력
		System.out.println(yourSonata.getCarNum()); // 10002 출력
	}
}

 

 

728x90
반응형
LIST

댓글