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
'개발공부 > Java' 카테고리의 다른 글
[Java] 13. 객체 배열을 구현한 클래스 - ArrayList (0) | 2021.12.01 |
---|---|
[Java] 12. 자료를 순차적으로 관리하는 방법 - 배열(Array) (0) | 2021.11.29 |
[Java] 10. static 응용 - 싱글톤 패턴(Singleton Pattern) (0) | 2021.11.27 |
[Java] 09. Static 변수와 Static 메서드에 대하여...(2) (0) | 2021.11.26 |
[Java] 09. Static 변수와 Static 메서드에 대하여...(1) (0) | 2021.11.24 |