IDictionary
є інтерфейсом і Dictionary
є класом.
Dictionary
знаряддя праці IDictionary
.
Це означає, що це можливо для посилання на Dictionary
екземпляр за допомогою / за IDictionary
екземпляром і викликати більшість Dictionary
методів та властивостей через IDictionary
екземпляр.
Дуже рекомендується використовувати якомога більше інтерфейсів, оскільки інтерфейси абстрагують модулі та збірки додатків, дозволяють поліморфізм, який є дуже поширеним і корисним у багатьох ситуаціях та випадках, і дозволяє замінювати один модуль іншим, не торкаючись інших модулів .
Припустимо, що в даний час програміст написав:
IDictionary<string> dictionary = new Dictionary<string>();
А тепер dictionary
викликає методи та властивості Dictionary<string>
.
У майбутньому бази даних збільшилися в розмірах, і ми виявляємо, що Dictionary<string>
це занадто повільно, тому ми хочемо замінити Dictionary<string>
на RedBlackTree<string>
, що швидше.
Отже, все, що потрібно зробити, - це замінити наведену вище інструкцію на:
IDictionary<string> dictionary = new RedBlackTree<string>();
Звичайно, що якщо RedBlackTree
реалізуєIDictionary
тоді весь код програми успішно компілюється, і у вас є нова версія програми, де програма тепер працює швидше та ефективніше, ніж попередня версія.
Без інтерфейсів таку заміну було б зробити важче, і програмісти та розробники вимагали б змінити більше коду, який є потенційним для помилок.