我在下面概述的内容是否有正式名称。该示例在 c# 中,但前提将适用于其他语言。我几乎可以肯定我几年前在其他语言中做过类似的事情,但是是什么,或者这个概念的名称让我无法理解。动态调度(各种)??
我试图传达的关键点是,在运行时,要执行的方法被确定并被调用。这些方法将具有几乎相同的签名,只是参数的类型不同,并且参数也都在同一个继承树中。我知道我遗漏了一些细节,但我想让示例保持简单。
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 { ... }