Existe-t-il un nom officiel pour ce que j'ai décrit ci-dessous. L'exemple est en C#, mais la prémisse s'appliquerait aux autres langs. Je suis presque certain d'avoir fait quelque chose comme ça il y a quelques années dans d'autres langues, mais quel nom, ou le nom du concept m'échappe. Envoi dynamique (de toutes sortes) ??Liaison à la méthode d'exécution
Le point clé que j'essaie de transmettre est que lors de l'exécution, la méthode à exécuter est déterminée et appelée. Les méthodes auraient presque la même signature, ne différant que par le type de l'argument, et que les arguments sont tous dans le même arbre d'héritage. Je sais qu'il y a quelques détails que j'ai laissés de côté, mais je veux garder l'exemple simple.
string result;
User u;
User user = new User();
Manager manager = new Manager();
u = user;
result = _Print(u);
Console.WriteLine(result); // user...
u = manager;
result = _Print(u);
Console.WriteLine(result); // manager...
// interested in part
private static string _Print(User u)
{
return (u is Manager) ? Print((Manager)u) : Print(u);
}
// plumbing
private static string Print(User u)
{
return "User...";
}
private static string Print(Manager m)
{
return "Manager...";
}
class User { ... }
class Manager : User { ... }
N'est-ce pas un anti-modèle? L'utilisateur ne devrait-il pas être responsable de fournir les données d'impression? –
c'est seulement comme ça pour le cas de l'exemple. la charge utile de chaque méthode est seulement là pour fournir le contexte. – jasper