자바 싱글톤 기초질문 드립니다.
-
게시물 수정 , 삭제는 로그인 필요
자바 입문한지 얼마안된 초보자입니다. 싱글톤부분 공부하고있는데 이해가 잘안되서
기초부분 설명부탁드립니다.
문제: 자동차 공장이 있습니다. 자동차 공장은 유일한 객체이고, 이 공장에서 생산되는 자동차는 제작될 때마다 고유의 번호가 부여됩니다. 자동차 번호가 10001부터 시작되어 자동차가 생산될 때마다 10002, 10003 이렇게 번호가 붙도록 자동차 공장 클래스, 자동차 클래스를 구현하세요. 다음 CarFactoryTest.java 테스트 코드가 수행 되도록 합니다.
package singleton2;
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 출력
}
}
package singleton2;
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;
}
}
package singleton2;
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;
}
}
CarFactoryTest 클래스에서
CarFactory factory = CarFactory.getInstance();
Car mySonata = factory.createCar();
이 코드에 대한 해석을 잘 못하겠습니다.
클래스명 참조변수 = new 클래스명(); 이게 인스턴스를 만드는건 알고있습니다.
그럼 CarFactory클래스에 있는 getInstance메서드를 호출해서 factory에 대입하는건가요?
factory앞에 CarFactory를 쓴 이유역시 잘 모르겟습니다.
그 밑에 Car mySonata = factory.createCar(); 이거 역시 같은 맥락으로 모르겟습니다.ㅠ
입문초보라 코드에 대한 하나한의 의미를 모르는 부분이 많습니다.
설명한번 부탁드리겠습니다.
package singleton2;
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 출력
}
}
package singleton2;
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;
}
}
package singleton2;
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;
}
}
CarFactory factory = CarFactory.getInstance();
Car mySonata = factory.createCar();
#자바 싱글톤 #자바 싱글톤 사용 이유 #자바 싱글톤 구현 #자바 싱글톤 장점 #자바 싱글톤 getinstance #자바 싱글톤 클래스 #자바 인터페이스 싱글톤 #자바 enum 싱글톤