J'ai souvent rencontré le terme "programmation vers une interface au lieu d'une implémentation", et je pense que je comprends un peu ce que cela signifie. Mais je veux m'assurer de bien comprendre ses avantages et ses implémentations possibles.
«Programmation vers une interface» signifie que, lorsque cela est possible, il convient de se référer à un niveau plus abstrait d'une classe (une interface, une classe abstraite ou parfois une superclasse quelconque), au lieu de se référer à une implémentation concrète.
Un exemple courant en Java est d'utiliser:
List myList = new ArrayList();
au lieu de ArrayList myList = new ArrayList();
.
J'ai deux questions à ce sujet:
Je veux m'assurer de bien comprendre les principaux avantages de cette approche. Je pense que les avantages sont surtout la flexibilité. Déclarer un objet comme une référence de plus haut niveau, plutôt qu'une implémentation concrète, permet plus de flexibilité et de maintenabilité tout au long du cycle de développement et tout au long du code. Est-ce correct? La flexibilité est-elle le principal avantage?
Existe-t-il d'autres moyens de «programmer vers une interface»? Ou est-ce que «déclarer une variable comme une interface plutôt qu'une implémentation concrète» est la seule implémentation de ce concept?
Je ne parle pas de l'interface de construction Java . Je parle du principe OO "programmation vers une interface, pas une implémentation". Dans ce principe, l '"interface" mondiale fait référence à tout "supertype" d'une classe - une interface, une classe abstraite ou une superclasse simple qui est plus abstraite et moins concrète que ses sous-classes plus concrètes.