인프런 커뮤니티 질문&답변

Levi님의 프로필 이미지
Levi

작성한 질문수

자바 기초부터 마스터하기 with 은종쌤 (Do it 자바 프로그래밍 입문) - Part 1(기초편)

p.196

해결된 질문

작성

·

246

·

수정됨

0

안녕하세요.

p.196 나혼자 코딩 풀어보니 실행은 되는데 정답 코드랑 조금 다르네요 이렇게 풀어도 괜찮나요? 클래스별로 변수도 잘 나눠서 배치하고 싶은데 그게 잘 안된 것 같고 돌아갈뿐이지 문제가 많은 것 같아서 피드백 한번 부탁드려요!

public class Car {

int carNum = CarFactory.getCarSerial();

 

public int getCarNum() {

return carNum;

}

}

=====================================================

public class CarFactory {

private static CarFactory carFactory;

private static int carSerial = 1000;

 

public static CarFactory getInstance() {

if(carFactory == null) {

carFactory = new CarFactory();

}

return carFactory;

}

 

public static int getCarSerial () {

return carSerial;

}

 

public Car createCar() {

carSerial++;

return new Car();

}

}

 

답변 1

1

박은종님의 프로필 이미지
박은종
지식공유자

객체는 객체 자체의 역할에 충실하게 코딩하는것이 좋습니다. 위 코드에서 carSerial 변수를 어디에 두는 것인가? 라는 관점에서 보면 factory는 차를 생산하는 객체이고, carSerial은 차가 생성될때 증가하는 정적 변수이기 때문에 이 변수는 Car 클래스에 종속적이라고 보는 것이 맞을것 같습니다. Car클래스에 carSerial을 두면 그렇게 되었을때 carNum을 가져오기 위해 Car 클래스에서 CarFactory를 참조할 일은 없으니까요 클래스간의 종속성이 낮아지는 방향으로 클래스의 관계를 가져가는것이 좀더 합리적이라 생각됩니다.

Levi님의 프로필 이미지
Levi
질문자

객체 자체의 역할, 클래스간의 종속성이 낮아지는 방향! 감사합니다!

Levi님의 프로필 이미지
Levi

작성한 질문수

질문하기