Ưu đãi xảy ra khi cả hai ứng cử viên đủ điều kiện. Vấn đề được nêu trong câu hỏi không thành công trên tài khoản này, bởi vì nó chỉ có tùy chọn thành phần.
"Thành phần cũng có thể sử dụng khái quát hóa". Liệu tuyên bố này có ý nghĩa với chúng tôi? Nếu không thì chúng ta vẫn chưa sẵn sàng để nắm bắt quy tắc 'ưu ái'.
Tại sao chúng tôi ủng hộ Thành phần là Thành phần cung cấp nhiều khả năng mở rộng / linh hoạt hơn so với khái quát hóa. Phần mở rộng / tính linh hoạt này chủ yếu đề cập đến thời gian chạy / tính linh hoạt động (đạt được với sự kết hợp của các giao diện và thành phần).
Lợi ích không thể nhìn thấy ngay lập tức. Để thấy được lợi ích, bạn cần đợi yêu cầu thay đổi bất ngờ tiếp theo. Vì vậy, trong hầu hết các trường hợp, những người gắn bó với khái quát hóa đều thất bại khi so sánh với những người chấp nhận sáng tác (ngoại trừ một trường hợp rõ ràng được đề cập sau). Do đó quy tắc. Từ quan điểm học tập nếu bạn có thể thực hiện tiêm phụ thuộc thành công thì bạn nên biết nên ưu tiên cái nào và khi nào. Quy tắc giúp bạn đưa ra quyết định khi bạn không chắc chắn nên chọn cái nào. Một lần nữa, bạn sẽ có thể thấy cả hai tùy chọn ở vị trí đầu tiên để ưu tiên một.
Tóm tắt: Thành phần: Khớp nối được giảm bằng cách chỉ cần một số thứ nhỏ hơn bạn cắm vào một cái gì đó lớn hơn và đối tượng lớn hơn chỉ gọi lại đối tượng nhỏ hơn. Tạo ra: Từ quan điểm API của bên thứ 3 xác định rằng một phương thức có thể bị ghi đè là một cam kết mạnh mẽ hơn so với việc xác định rằng một phương thức có thể được gọi (chắc chắn giành chiến thắng cho Tổng quát hóa). Và đừng bao giờ quên rằng với bố cục bạn cũng đang sử dụng khái quát hóa, từ một giao diện thay vì một lớp lớn. Nhưng toàn bộ tín dụng đi vào thành phần không may.