3

Android リソースIDは、XML 定義のレイアウト コンポーネントを取得/変更する方法としてよく使用されます。Android アプリケーションの Java コードの一意の識別子として純粋に使用することは許容されますか? 例えば:

Android リソース ID の使用

ids.xml

<item name="sensor_pressure" type="id"/>
<item name="sensor_humidity" type="id"/>
<item name="sensor_precision_gas" type="id"/>

センサー.java

public Sensor(int sensorId) {
    initializeSensor(sensorId);
}

private void determineSensorType(int sensorId) {
    switch(sensorId) {
    case R.id.sensor_pressure:
        intializePressureSensor();
        break;
    case R.id.sensor_humidity:
        initializeHumiditySensor();
        break;
    // etc...
    }
}

それとも、純粋な Java で処理する方が望ましいでしょうか? 例えば:

Java のみを使用する

センサー.java

public Sensor(int sensorId) {
    initializeSensor(sensorId);
}

enum SensorType {
    PRESSURE, HUMIDITY, PRECISION_GAS
}

private void determineSensorType(SensorType sensorType) {
    switch(sensorType) {
    case SensorType.PRESSURE:
        intializePressureSensor();
        break;
    // etc...
    }
}

私の例の最良の解決策:

以下MaciejGórskiより。インターフェイスを使用すると、一意の ID の必要性を完全になくすことによって生じる問題を解決できます。

public interface Sensor {

}

public class HumiditySensor implements Sensor {

    public HumiditySensor() {
        init();
    }
}
4

3 に答える 3

2

オブジェクト指向の方法はどうですか?

public interface Sensor {

}

public class HumiditySensor implements Sensor {

    public HumiditySensor() {
        init();
    }
}

コード内の多くの場所で醜い switch ステートメントを使用することを避けることができます。

于 2013-06-04T20:24:57.233 に答える