2013-07-16 7 views
2

몇 개의 센서가 있다고 가정 해 보겠습니다. 대부분의 센서는 가속도계와 같은 3 가지 값을 제공합니다.센서 보정 디자인 패턴

public class GenericSensor { 
    double x, y, z; 
} 

public class Accelerometer extends GenericSensor { 
    double roll, pitch; 
} 

모든 센서는 약간 다릅니다. 왜 일부는 교정이 필요하고 다른 것은 교정이 필요하지 않습니다.

값을 보정하고 다른 값으로 원시 값을 유지하는 좋은 방법을 찾을 수 없습니다.

나중에 필요하면 자이로 미터 또는 자력계와 같은 다른 센서 유형으로 쉽게 확장 할 수 있어야합니다.

첫 번째 시도는 교정을 꾸미는 것이 었습니다. 모든 센서가 GenericSensorAccelerometer과 같이 확장하면 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; 
} 

의견을 보내주십시오. 아니면 제가 놓친이 같은 것들을위한 디자인 패턴이 있습니까?

미리 감사드립니다.

답변

0

클래스는 어떻게 사용됩니까? 클래스를 호출 할 코드를 먼저 작성한 다음 API가 필요한 것을 알 수 있습니다.

예를 들어, GenericSensor에는 사용자가 조정할 수있는 showCalibrationView 메소드가 필요할 수 있습니다.

+0

"클래스를 호출 할 코드를 먼저 작성한 다음 API가 무엇인지 알아야합니다." 맞았 어. 정말 최적은 아니지만 작동합니다. (부족한 담당자 때문에 +1 할 수 없음) – Jay