2010-01-13 5 views
2

D'un point de vue conception et accouplement lâche. Est-ce une bonne idée d'avoir une interface pour chaque classe dans un projet qui pourrait faire partie d'un modèle de composition?Interfaces et accouplement

J'ai un projet où je fais ceci, mais maintenant je reçois plutôt beaucoup d'interfaces, dans une tentative de garder les choses relativement lâchement couplées.

+0

Une alternative au polymorphisme d'exécution comme le font habituellement les interfaces OOP est le polymorphisme de compilation, comme l'utilisation de modèles C++ ou de génériques C#. –

Répondre

5

Sans connaître les détails de votre conception, c'est ainsi que le Interface Segregation Principle (pdf) est supposé fonctionner.

Vous devriez fournir une interface pour chaque classe dont vous pourriez avoir besoin pour échanger l'implémentation (je ne créerais pas d'interface pour chaque DTO, par exemple).

1

En général, je crée des interfaces pour coupler des classes de façon lâche afin de pouvoir créer des fakes pour les classes qui ne m'intéressent pas. Par exemple, une classe de gestionnaire de logique métier aura une référence à une interface pour une classe d'accès aux données.

Je ne crée une interface que si j'ai réellement besoin d'un 'seam' pour mes tests, je ne crée pas seulement des interfaces pour tout.