Đây là một ví dụ trừu tượng về vấn đề của tôi: Tôi có một lớp học chung (Car
) có một loại (brand
). Tất cả các đối tượng chỉ nên khác nhau theo thương hiệu và dựa trên thương hiệu này nên được xử lý khác nhau.Gọi một phương pháp cụ thể dựa trên loại enum?
Tất cả các đối tượng của lớp này được thu thập trong danh sách Lớp dịch vụ. Dịch vụ phải thực hiện một thường trình trên toàn bộ danh sách, là chủ yếu là giống nhau. Chỉ cần một cuộc gọi hàm ở giữa sẽ khác nhau.
Dựa trên loại này tôi muốn gọi các phương pháp khác nhau: Hiện tại tôi đang khẳng định bằng cho loại enum và gọi các phương thức khác nhau dựa trên kết quả. Nhưng đây là loại xấu xí và tôi tự hỏi nếu có giải pháp tốt hơn về điều này?
class Car {
public enum Brand {
BMW, AUDI;
}
private Brand brand;
specificMeth1();
specificMeth2();
}
class Service {
List<Car> bmw;
List<Car> Audi;
processCar() {
processList(bmw);
processList(audi);
}
processList(List<Car> list) {
for (Car car : list) {
if (car.getBrand.equals(Brand.BMW)) {
specificMeth1();
} else {
specificMeth2();
}
}
}
}
Sidenote: bạn không cần sử dụng 'bằng () 'với enums. 'car.getBrand() == Brand.BMW' hoạt động tốt. –