몇 개의 센서가 있다고 가정 해 보겠습니다. 대부분의 센서는 가속도계와 같은 3 가지 값을 제공합니다.센서 보정 디자인 패턴
public class GenericSensor {
double x, y, z;
}
public class Accelerometer extends GenericSensor {
double roll, pitch;
}
모든 센서는 약간 다릅니다. 왜 일부는 교정이 필요하고 다른 것은 교정이 필요하지 않습니다.
값을 보정하고 다른 값으로 원시 값을 유지하는 좋은 방법을 찾을 수 없습니다.
나중에 필요하면 자이로 미터 또는 자력계와 같은 다른 센서 유형으로 쉽게 확장 할 수 있어야합니다.
첫 번째 시도는 교정을 꾸미는 것이 었습니다. 모든 센서가 GenericSensor
을 Accelerometer
과 같이 확장하면 CalibratedGenericSensor(GenericSensor s)
을 사용할 수 있습니다. 그러나 CalibratedGenericSensor
개체를 다른 방법으로 제공하는 경우 계산 된 구성원 값에 대해 Acceleromter
에 액세스하는 것은 번거로운 작업입니다.
왜 이런 식으로 교정을해야할까요?
public class GenericSensor {
double x, y, z;
}
public class CalibratedGenericSensor extends GenericSensor {
double calX, calY, calZ
@Override
double getX() { return calX; }
@Override
void setX(double x){ super.setX(x); calX = calibrate(x); }
double getRawX() { return super.getX(); }
}
public class Accelerometer extends CalibratedGenericSensor {
double pitch, roll;
}
의견을 보내주십시오. 아니면 제가 놓친이 같은 것들을위한 디자인 패턴이 있습니까?
미리 감사드립니다.
"클래스를 호출 할 코드를 먼저 작성한 다음 API가 무엇인지 알아야합니다." 맞았 어. 정말 최적은 아니지만 작동합니다. (부족한 담당자 때문에 +1 할 수 없음) – Jay