(Trong ngữ cảnh .NET cho giá trị của nó)Khi nào cần giao diện?
Tôi có xu hướng không sử dụng thừa kế và hiếm khi sử dụng giao diện. Tôi bắt gặp một người nghĩ rằng giao diện là điều tốt nhất kể từ khi nhổ. Anh ta sử dụng chúng ở mọi nơi. Tôi không hiểu điều này và do đó các câu hỏi tiếp theo. Tôi chỉ muốn kiểm tra sự hiểu biết của tôi về giao diện.
Nếu bạn đang sử dụng giao diện ở mọi nơi, tôi giả định bạn có thể dự đoán tương lai, yêu cầu ứng dụng của bạn sẽ được đóng đinh và không có gì thay đổi trong ứng dụng của bạn. Đối với tôi, đặc biệt trong quá trình phát triển ban đầu, giao diện trở thành một sự kéo. Các ứng dụng rất năng động thông qua cuộc sống của nó. Nếu bạn cần trừ hoặc thêm thành viên vào giao diện, nhiều thứ sẽ bị hỏng. Anh chàng ở trên nói rằng anh ta tạo một giao diện khác để xử lý (các) thành viên mới. Không có gì phá vỡ.
Đó không phải là thành phần đó phải không? Tại sao không sử dụng bố cục mà không có giao diện? Linh hoạt hơn.
Làm cách nào để xử lý trường hợp một thành viên phải được trừ khỏi giao diện? Về cơ bản anh ta không. Những điều chỉ cần phá vỡ và đó là tuyệt vời bởi vì bây giờ bạn có thể nhìn thấy tất cả các khu vực bị ảnh hưởng và sửa chữa chúng. Thay vì tìm ra một cách thanh lịch hơn, nơi tất cả các đường dẫn mã có liên quan, chúng ta chỉ cần tách ra các phần của lớp thông qua lực lượng vũ phu?
Tôi nghĩ về ứng dụng phần mềm dưới dạng biểu đồ. Một đồ thị hoàn chỉnh là trường hợp xấu nhất, có n (n-1)/2. Điều này có nghĩa là mọi lớp đều nói chuyện với mọi lớp. Một mạng nhện khó hiểu. n-1 là tốt nhất, trong đó họ là một hệ thống phân cấp chặt chẽ về giao tiếp. Việc thêm một giao diện khác chỉ để bù cho một thành viên mới cần thiết thêm một vertici vào đồ thị, có nghĩa là nhiều cạnh hơn và một sự thực hiện mạnh mẽ hơn của phương trình n (n-1)/2. Thành phần không có giao diện giống như mixin hơn. Chỉ chọn các lớp học sử dụng các phương thức cụ thể. Với giao diện, tất cả các lớp đều buộc phải sử dụng thành viên, ngay cả khi họ không cần chúng. Cách tiếp cận bố cục/mixin không thêm các cạnh không cần thiết mới.
Tôi phải không đồng ý với một số giả định của bạn. Giao diện và thừa kế có sử dụng và tái cấu trúc ứng dụng trong suốt vòng đời của nó là được mong đợi. "Tại sao không sử dụng bố cục mà không có giao diện?" Bởi vì bạn có thể kiểm tra một cách thanh lịch liệu các đối tượng khác nhau có phơi bày một giao diện hay không. – overslacked
Thực ra phân tích biểu đồ của bạn là đúng nhưng kết luận của bạn là sai. Nếu bạn có n người gọi gọi m callees bạn có n * m cạnh. Nếu tất cả các cuộc gọi đó có thể được marshalled thông qua một giao diện duy nhất (lạc quan nhưng hợp lý) thì bạn chỉ có n + m cạnh. Việc triển khai các giao diện hiệu quả sẽ làm giảm đáng kể độ phức tạp của biểu đồ. – CurtainDog
"... tất cả các cuộc gọi đó có thể được sắp xếp thông qua một giao diện duy nhất ..." Có lẽ trong một ứng dụng rất đơn giản. "... thì bạn chỉ có cạnh n + m."Nếu giao diện được thừa hưởng bởi các lớp sử dụng tất cả các thành viên giao diện, sau đó là một rửa. Kịch bản của tôi là đề cập đến trường hợp bạn phát điên với các giao diện. Đọc câu thứ hai đến câu cuối – 4thSpace