싱글톤(Singleton) 패턴이란?
: 전 시스템에 단 하나의 인스턴스만이 존재하도록 구현하는 방식(ex.회사이름 등)
어떻게 구현하는가(in Java)?
- 자바는 글로벌 변수가 없다 : static 변수 사용
- 생성자가 없으면 public default 생성자가 생성된다. : 생성자를 private으로 만듦
- 외부에서 생성된 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 |