개발공부/Java
[Java] 11. static과 싱글톤 패턴 예제
sangyeon
2021. 11. 28. 23:05
728x90
설명에 따른 객체를 구현하여 테스트 코드가 실행되도록 구현해보기.
자동차 공장이 있다. 자동차 공장은 유일한 객체이고, 이 공장에서 생산되는 자동차는 제작될 때마다 고유의 번호가 부여된다. 자동차 번호가 10001부터 시작되어 자동차가 생산될 때마다 +1 번호가 붙도록, 다음 CarFactoryTest.java 테스트 코드가 수행되도록 자동차 공장 클래스, 자동차 클래스를 구현하여라. |
> 정답은 맨 아래
# CarFactoryTest.java
package ch19; 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 출력 } } |
정리
1. CarFactory는 유일한 객체이기 때문에 싱글톤 패턴으로 private static으로 Client 코드에서 CarFactory 인스턴스를 둘 이상 생성할 수 없도록 제한한다.
2. Client 코드(CarFactoryTest.java)를 보면, Car 객체 생성 시에 CarFactory 객체의 createCar라는 메서드를 사용하기 때문에 CarFactory.java 파일에 Car 객체를 생성하는 코드가 있어야 한다.
====================================================================
정답
====================================================================
# CarFactory.java
package ch19; public class CarFactory { private static CarFactory carfactory = new CarFactory(); private CarFactory() {} public static CarFactory getInstance() { if(carfactory == null) { carfactory = new CarFactory(); } return carfactory; } public static Car createCar() { Car car = new Car(); return car; } } |
# Car.java
package ch19; public class Car { private static int serialNum = 10000; private int carNum; public Car() { serialNum++; carNum = serialNum; } public int getCarNum() { return carNum; } } |
728x90