Tâche: Je suis en train de concevoir une bibliothèque qui sera utilisée par les développeurs.Comment puis-je concevoir ma bibliothèque Java/C# pour qu'elle reste compatible en cas de modifications futures?
Objectif: Je dois m'assurer que les changements dans les futures versions n'affecteront pas les développeurs existants.
Exemple:
Situation lors de la première sortie:
Il y a une classe
public class ClassSample
{
String methodSample(String para1,String Para2, int Para3, String Para4);
}
Situation lors de la deuxième sortie:
Exigences:
La réponse de methodSample peut renvoyer plusieurs valeurs.
Plus de paramètres sont nécessaires dans la méthode methodSample.
Solution: Une façon peut être d'ajouter une autre méthode surchargée qui aura de nouveaux paramètres et de l'objet plutôt que de retourner intégré type de données.
Mais le problème avec la solution ci-dessus est, il aura trop de méthodes surchargées à l'avenir, trop de paramètres seront exagérés.
modifié Solution 1:
void methodSample(Request request, Response response)
Dans chaque version (évidemment si nécessaire), je modifierai demande & cours de réponse d'avoir de nouvelles méthodes supplémentaires pour obtenir/valeurs de réglage. Il y aura un problème dans ce cas car à l'intérieur de la méthode, je ne serai pas en mesure de différencier si l'appelant est de Version10 ou Version20.
modifié Solution 2:
void methodSample(AbsractRequest request, AbstractResponse response)
Dans chaque version, nous pouvons étendre la classe dérivée comme Request200 étend Request100 étend AbstractRequest, de même pour les classes de réponse. Dans ce cas, je peux vérifier à l'intérieur de la méthode si l'appelant est de Version10 ou Version20 en vérifiant la frappe de l'instance.
En résumé La solution modifiée 2 me semble bonne, qu'en pensez-vous?