Tôi biết rằng đây là một câu hỏi rất cơ bản, nhưng một người phỏng vấn đã hỏi tôi một cách rất mánh khóe và tôi bất lực :(
Tôi chỉ biết định nghĩa vật liệu hoặc lý thuyết cho một giao diện và cũng đã triển khai nó trong nhiều dự án tôi đã làm việc. Nhưng tôi thực sự không hiểu tại sao và làm thế nào là hữu ích.
Tôi cũng không hiểu một điều trong giao diện. ví dụ: chúng tôi sử dụng
conn.Dispose();
trong khối cuối cùng. Nhưng tôi không thấy rằng lớp đang triển khai hoặc kế thừa lớp IDisposable
giao diện ( SqlConnection
). Tôi tự hỏi làm thế nào tôi chỉ có thể gọi tên phương thức. Cũng trong điều tương tự, tôi không hiểu phương thức Dispose hoạt động như thế nào bởi vì, chúng ta cần triển khai phần thân hàm với việc thực hiện riêng cho tất cả các phương thức giao diện. Vậy làm thế nào Giao diện được chấp nhận hoặc đặt tên là hợp đồng? Những câu hỏi này cứ liên tục xuất hiện trong đầu tôi và thật lòng tôi chưa bao giờ thấy bất kỳ chủ đề hay nào có thể giải thích câu hỏi của tôi theo cách mà tôi có thể hiểu.
MSDN như thường lệ trông rất đáng sợ và không có dòng nào rõ ràng cả ( Mọi người, xin lỗi, người đang phát triển cấp cao, tôi cảm thấy mạnh mẽ rằng bất kỳ mã hoặc bài viết nào sẽ đến được tâm trí của bất kỳ ai nhìn thấy nó, do đó, giống như nhiều người khác nói, MSDN không sử dụng ).
Người phỏng vấn nói:
Anh ta có 5 phương thức và anh ta rất vui khi trực tiếp thực hiện nó trong lớp, nhưng nếu bạn phải chọn lớp Trừu tượng hoặc giao diện, bạn chọn phương thức nào và tại sao? Tôi đã trả lời anh ấy tất cả những thứ tôi đọc trong nhiều blog nói về ưu điểm và nhược điểm của cả lớp trừu tượng và giao diện, nhưng anh ấy không bị thuyết phục, anh ấy đang cố gắng hiểu "Tại sao giao diện" nói chung. "Tại sao lớp trừu tượng" nói chung ngay cả khi tôi có thể thực hiện cùng một phương thức chỉ một lần và không thay đổi nó.
Tôi thấy không có nơi nào trong mạng, tôi có thể nhận được một bài viết sẽ giải thích rõ ràng cho tôi về giao diện và chức năng của nó. Tôi là một trong số nhiều lập trình viên, những người vẫn chưa biết về giao diện (tôi biết lý thuyết và phương pháp tôi đã sử dụng) nhưng không hài lòng vì tôi hiểu rõ về nó.
SqlConnection
kế thừa System.ComponentModel.Component
mà thực hiện IDisposable
.
SqlConnection
thực hiện IDisposable
.