기본 클래스가 있으므로 기계 작동 결과를 저장하는 DispenseResult라고 부르 자고합니다. 나는 기계 군을 디자인하고있다. DispenseResult에는 모든 컴퓨터에 적용 할 수있는 멤버 변수가 포함됩니다 (예 : 작업 중에 그려지는 현재).자바 캐스팅을 사용하는 객체 지향 디자인과 기본 클래스보다 많은 멤버 변수를 가진 파생 클래스
필자는 특정 특수 기계를 모델링하기 위해 파생 클래스가 필요하다고 생각했습니다. MotorizedDispenseResult. 모터 함수와 관련된 멤버 변수가 있습니다.
클라이언트 코드의 일부는 DispenseResult (또는 파생 클래스)에서 이러한 다양한 멤버 변수를 가져 와서 로그하는 것입니다.
void log(DispenseResult result) {
// store results common to all machines
log("current = " + result.getCurrent());
// store results for specialized cases
if (result instance of MotorizedDispenseResult) {
log("error = " + ((MotorizedDispenseResult)result).getMotorError());
... etc.
}
}
이 새로운 파생 된 형식은 모든 instanceof를 검사하여 만든으로 혼란스러워 할 것입니다 : 나는 그것을 할 경우 방법은 내가 같은 코드로 끝날 것 이상으로 설명했다. 그것을 할 수있는 더 깨끗한 방법이 있습니까?
TY, 프레드
감사합니다, 아주 분명 지금, 나무 : –
@fred, 쉽게이 물건 아닌가요의 나무를보고되지 않았다). 잃어 버리기 쉽습니다. – hvgotcodes