Я багато натрапив на термін "програмування на інтерфейс замість реалізації", і я думаю, що я начебто розумію, що це означає. Але я хочу переконатися, що я розумію, що це переваги та можливі реалізації.
"Програмування на інтерфейс" означає, що, коли це можливо, слід посилатися на більш абстрактний рівень класу (інтерфейс, абстрактний клас або іноді якийсь суперклас), а не на конкретні реалізації.
Загальний приклад на Java - це використання:
List myList = new ArrayList();
замість ArrayList myList = new ArrayList();
.
У мене є два питання щодо цього:
Я хочу переконатися, що я розумію основні переваги такого підходу. Я думаю, що переваги - це переважно гнучкість. Оголошення об’єкта як більш довідкового рівня, а не конкретної реалізації, дозволяє досягти більшої гнучкості та стійкості упродовж усього циклу розробки та в усьому коді. Це правильно? Чи є гнучкість головною перевагою?
Чи існує більше способів "програмування на інтерфейс"? Або "оголошення змінної як інтерфейсу, а не конкретної реалізації" є єдиною реалізацією цієї концепції?
Я не говорю про інтерфейс Java-конструкти . Я говорю про принцип ОО "програмування на інтерфейс, а не реалізація". У цьому принципі світовий "інтерфейс" відноситься до будь-якого "супертипу" класу - інтерфейсу, абстрактного класу або простого суперкласу, який є більш абстрактним і менш конкретним, ніж це більш конкретні підкласи.