Je suis sur le point d'ajouter une classe X qui sera utilisée par mes trois classes précédemment conçues (A, B et C).Devrais-je utiliser une API/ABC lors de la conception d'une classe utilisée par plusieurs en C++?
La nouvelle classe X contiendra des données et des fonctions pour les nouvelles fonctionnalités et fournira des services aux classes qui l'utilisent pour masquer les couches inférieures. Le problème est que A, B et C utiliseront la classe X de manière très différente, c'est-à-dire utiliseront des fonctions différentes.
Ma question est de savoir si je devrais fournir une API (ou une classe de base abstraite en C++) pour la nouvelle classe X ou non. Si je devais, devrait cette API soit par classe X ou par classe A, B et C? J'ai lu quelque part qu'une API est parfois plus étroitement liée à cet appelant que la classe qui l'implémente. Si je fournis une API pour chaque appelant, l'API ne contiendra que les fonctions dont l'appelant a besoin. Ou devrais-je simplement créer une classe C++ normale et laisser les appelants utiliser un sous-ensemble des fonctions publiques de X dans A, B et C, bien qu'ils puissent "techniquement" les utiliser tous? Les fonctions de la classe X sont peu susceptibles de changer et le besoin de créer une classe similaire à X.
Si je ne suis pas complètement perdu dans la programmation orientée objet, une des raisons de fournir une interface/API pour une classe est ce code qui utilise l'interface/API n'a pas besoin de changer si vous ajoutez une autre sous-classe puisque l'appelant travaille sur le nom de l'interface et utilise la liaison dynamique pour résoudre le type de sous-classe correcte. Cordialement et s'il vous plaît faites le moi savoir si quelque chose n'est pas clair et je vais essayer de répondre le plus rapidement possible.
Merci,
Tomas