Vì vậy, tôi khá mới để lập trình trong thế giới thực (bên ngoài các dự án học thuật) và đã bắt gặp rất nhiều bài đăng nói rằng sử dụng instanceof
là một điều xấu để sử dụng để xác định một đối tượng cụ thể là lớp nào.
Tình huống của tôi là tôi có ba lớp, một lớp sản phẩm cơ sở, một lớp mở rộng lớp đó và lớp khác kéo dài ra. Tất cả đều được lưu trữ trong cùng một bảng trong cơ sở dữ liệu và tôi có một số mã cần sử dụng các phương thức trên mỗi bảng để lấy dữ liệu khỏi chúng.
Thực hành tốt nhất để có được xung quanh cách làm này là gì? Tôi đã đọc một số điều về đa hình nhưng tôi không thể tìm thấy bất kỳ ví dụ nào khắc phục vấn đề tôi gặp phải. Tất cả chúng thường ghi đè lên một phương thức mà đối với tôi sẽ không hoạt động vì tôi cần phải kéo những thứ khác nhau từ các đối tượng khác nhau.
Có cách nào tốt hơn để làm điều này hay tôi bị mắc kẹt với việc sử dụng instanceof
hoặc một số loại phản xạ để có được các trường cụ thể cho các đối tượng?
getSpecifics()
là được triển khai khác nhau trên mỗi phương thức, với mỗi phương thức trả về dữ liệu cụ thể cho lớp?
instanceof
sai; cố gắng tìm lớp của một đối tượng thường là vấn đề. Không phải lúc nào cũng sai, nhưng có lẽ trong trường hợp của bạn là như vậy. Có thể nếu bạn cho chúng tôi biết những gì bạn đang cố gắng thực hiện, chúng tôi có thể đề xuất một giải pháp bằng cách sử dụng đa hình.