Tôi có ba cảm biến trong một gói duy nhất mà tất cả cần phải được hiệu chỉnh mà tôi sẽ gọi là Sens1, Sens2 và Sens3. Hiệu chuẩn cho Sens1 và Sens2 giống hệt nhau, nhưng hiệu chuẩn cho Sens3 yêu cầu thêm một tham số. Câu hỏi của tôi là "Cách tốt nhất để đối phó với ba đối tượng gần giống nhau trong khi vẫn duy trì khả năng đọc là gì?"
Tất nhiên, suy nghĩ đầu tiên của tôi là sử dụng đa hình. Tôi sẽ thiết lập một đối tượng Cảm biến chung bằng phương thức .calibrate (Tham số tham số) trong đó lớp Tham số cho phép tôi thay đổi số lượng tham số dựa trên hiệu chuẩn mà tôi đang thực hiện. Tuy nhiên, điều này dẫn đến những điều sau đây:
Sensor sens1 = new Sensor();
Sensor sens2 = new Sensor();
Sensor3 sens3 = new Sensor3();
Vì vậy, những người trong tương lai sẽ cần phải biết rằng một cảm biến khác về cơ bản so với hai cảm biến kia, nhưng rất giống nhau, đối với tôi, điều tốt nhất để làm là chỉ phân loại tên Sens1 và Sens2. Nói cách khác, tạo hai lớp con không sửa đổi hoặc mở rộng bất kỳ hành vi nào để có tên lớp logic hơn. Hãy nhớ rằng, cả ba cảm biến này đều nằm trong cùng một gói, vì vậy dữ liệu này rất thường xuyên đi cùng nhau. Điều này thay đổi mã trên thành:
Sensor1 sens1 = new Sensor1();
Sensor2 sens2 = new Sensor2();
Sensor3 sens3 = new Sensor3();
Ở đâu
Sensor1 extends Sensor {
}
Sensor2 extends Sensor {
}
Sensor3 extends Sensor {
@Override
calibrated(Parameters params) {
\\ Code
}
}
Tôi có điên không khi nghĩ rằng đây là một ý tưởng tốt? Có một mô hình sạch hơn tôi hoàn toàn thiếu ở đây?