Я знаю, що це дуже основне запитання, але інтерв'юер задав мене дуже хитро, і я був безпорадний :(
Я знаю лише матеріал або теоретичне визначення інтерфейсу, а також впроваджував його у багатьох проектах, над якими працював. Але я дійсно не розумію, чому і як це корисно.
Я також не розумію жодної речі в інтерфейсі. наприклад, ми використовуємо
conn.Dispose();
нарешті блок. Але я не бачу, щоб клас мав на увазі клас реалізації чи успадковування IDisposable
інтерфейсу ( SqlConnection
). Мені цікаво, як я можу просто назвати ім'я методу. Крім того, я не розумію, як працює метод Dispose, тому що нам потрібно реалізувати функціональний орган із власною реалізацією для всіх методів інтерфейсу. То як інтерфейси приймаються або називаються контрактами? Ці питання, що тривали в моїй свідомості дотепер, і відверто кажучи, я ніколи не бачив жодної хорошої нитки, яка б пояснювала мої питання таким чином, щоб я міг зрозуміти.
MSDN, як завжди, виглядає дуже страшно, і жоден рядок там не зрозумілий ( Люди, люб'язно вибачте, хто перебуває на високому рівні розвитку, я настійно вважаю, що будь-який код чи стаття повинні дійти до уваги кожного, хто бачить його, отже, як кажуть багато інших, MSDN не корисний ).
Інтерв'юер сказав:
У нього є 5 методів, і він із задоволенням реалізує це у класі безпосередньо, але якщо вам доведеться перейти на клас Анотація або інтерфейс, який саме ви обираєте і чому? Я відповів йому на всі речі, які я читав у різних блогах, кажучи про переваги та недоліки як абстрактного класу, так і інтерфейсу, але він не переконаний, він намагається зрозуміти "Чому інтерфейс" взагалі. "Чому абстрактний клас" взагалі, навіть якщо я можу реалізувати ті самі методи лише один раз і не хочу його змінювати.
Я не бачу місця в мережі, я міг би отримати статтю, яка б мені чітко пояснила інтерфейси та його функціонування. Я один із тих численних програмістів, які досі не знають про інтерфейси (я знаю теоретичні та методи, якими я користувався), але не задоволений тим, що я це зрозумів чітко.
SqlConnection
успадковує System.ComponentModel.Component
який реалізує IDisposable
.
SqlConnection
реалізує IDisposable
.