2

可以说我有几个传感器。大多数传感器提供 3 个值,例如加速度计。

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

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

每个传感器都有点不同。这就是为什么有些人需要校准而其他人不需要的原因。

我找不到校准值并将原始值保留用于其他目的的好方法。

如果我以后需要它们,它应该可以轻松扩展到其他传感器类型,例如陀螺仪或磁力计。

我的第一次尝试是装饰校准。如果所有传感器都GenericSensor像这样扩展Accelerometer,我可以使用CalibratedGenericSensor( GenericSensor s ). 但是,如果我只将对象提供给其他方法,则访问Acceleromter其计算的成员值会很麻烦。CalibratedGenericSensor

这就是为什么我认为校准应该像这样更早地进行。

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;
}

你对此有什么想法?或者对于我所缺少的这样的事情是否存在设计模式?

在此先感谢您的时间。

4

1 回答 1

0

课程将如何使用?尝试首先编写将调用该类的代码,然后您将知道 API 需要是什么。

例如,可能一个 GenericSensor 需要一个 showCalibrationView 方法来允许用户校准它。

于 2013-07-23T08:11:39.403 回答