Inversion de dépendances (1)
Le problème
Supposons l'architecture suivante où la classe A dépend de la classe B.
Dans cette conception, si B est amenée à changer (e.g. montée en version), alors la classe B et la classe A vont devoir être rédéployées.
On va devoir :
- packager
BetA - build
BetA - pour finalement déployer
BetAchez le client

Or, seulement B a été modifiée. Nous souhaitons donc que seulement B soit packagée, build et déployée chez le client.
Inversion de dépendance
Pour ce faire, nous allons utiliser le principe d'Inversion de dépendances.
:::note Note
- Les modules de haut niveau (e.g.
A) ne doivent pas dépendre des modules de bas niveau (e.g.B). - Les abstractions ne doivent pas dépendre des détails. Les détails doivent dépendre des abstractions. :::
En d'autre terme, A qui est un détail doit dépendre d'une interface I.
Si nous appliquons ces deux affirmations à notre architecture nous obtenons

Ane dépend plus deBmais de son interfaceIB- Donc si
Best modifiée alors seulementBsera packagée, build et déployée chez le client
:::note Note
Cependant, si nous modifions l'interface IB alors les classes B et A devront être packagées, build et déployées chez le client. Néanmoins une interface est moins volatile qu'une implémentation.
:::