Contexte
J'ai un projet qui dépend de l'utilisation d'un certain type de périphérique matériel, alors peu importe qui fabrique ce périphérique tant qu'il fait ce dont j'ai besoin. Cela étant dit, même deux appareils qui sont censés faire la même chose auront des différences lorsqu'ils ne sont pas fabriqués par le même fabricant. Je pense donc à utiliser une interface pour dissocier l'application de la marque / du modèle particulier du périphérique concerné, et à la place, l'interface ne couvre que les fonctionnalités de plus haut niveau. Voici à quoi je pense que mon architecture ressemblera:
- Définissez une interface dans un projet C #
IDevice
. - Avoir un concret dans une bibliothèque définie dans un autre projet C #, qui sera utilisé pour représenter le périphérique.
- Demandez au dispositif concret de mettre en œuvre l'
IDevice
interface. - L'
IDevice
interface peut avoir des méthodes commeGetMeasurement
ouSetRange
. - Faites en sorte que l'application connaisse le béton et passez le béton au code d'application qui utilise (et non implémente ) le
IDevice
périphérique.
Je suis à peu près sûr que c'est la bonne façon de procéder, car je pourrai alors changer le périphérique utilisé sans affecter l'application (ce qui semble parfois se produire). En d'autres termes, peu importe la façon dont les implémentations GetMeasurement
ou SetRange
fonctionnent réellement à travers le béton (comme cela peut différer selon les fabricants de l'appareil).
Le seul doute dans mon esprit, c'est que maintenant l'application et la classe concrète du périphérique dépendent toutes deux de la bibliothèque qui contient l' IDevice
interface. Mais est-ce une mauvaise chose?
Je ne vois pas non plus comment l'application n'aura pas besoin de connaître le périphérique, sauf si le périphérique et se IDevice
trouvent dans le même espace de noms.
Question
Cela semble-t-il être la bonne approche pour implémenter une interface pour découpler la dépendance entre mon application et le périphérique qu'elle utilise?