Ho tre sensori in un unico pacchetto che devono essere tutti calibrati, che chiamerò sens1, sens2 e sens3. La calibrazione per sens1 e sens2 sono identici, ma la calibrazione per sens3 richiede un parametro aggiuntivo. La mia domanda è: "Qual è il modo migliore per gestire tre oggetti quasi identici pur mantenendo la leggibilità?"
Il mio primo pensiero, ovviamente, era usare il polimorfismo. Vorrei impostare un oggetto Sensor generico con un metodo .calibrate (Parameters params) in cui la classe Parameters mi consente di variare il numero di parametri in base alla calibrazione che sto facendo. Tuttavia, questo porta a quanto segue:
Sensor sens1 = new Sensor();
Sensor sens2 = new Sensor();
Sensor3 sens3 = new Sensor3();
Quindi le persone future dovranno sapere che un sensore è fondamentalmente diverso dagli altri due, ma molto molto simile, mi sembra che la cosa migliore da fare sia sottoclasse Sens1 e Sens2 solo nel nome. In altre parole, crea due sottoclassi che non modificano o estendono alcun comportamento per avere più nomi di classi logiche. Ricorda, tutti e tre questi sensori sono nello stesso pacchetto, quindi questi dati vanno molto spesso insieme. Questo cambia il codice precedente in:
Sensor1 sens1 = new Sensor1();
Sensor2 sens2 = new Sensor2();
Sensor3 sens3 = new Sensor3();
dove
Sensor1 extends Sensor {
}
Sensor2 extends Sensor {
}
Sensor3 extends Sensor {
@Override
calibrated(Parameters params) {
\ Code
}
}
Sono pazzo di pensare che sia una buona idea? C'è un modello più pulito che mi manca completamente qui?