我正在尝试创建一个对象,该对象可以调用 3 种方法之一来响应用户输入。我们称它们为 , DoShape
,DoColor
和DoPowerTool
。这些方法分别作为基类和接口的一部分存在:
Public Class PowerTool
{
...
public virtual void DoPowerTool()
{
...
}
}
Public Interface Shape
{
void DoShape(PowerTool p);
}
Public Interface Color
{
void DoColor(PowerTool p);
}
作为DoShape
并且DoColor
需要 PowerTool,直观的方法是以某种方式将这些方法烘焙到 PowerTool 实例本身中。
不幸的是,我不能让 PowerTool 类直接实现 Shape 和 Color,因为直到运行时我才知道它是 Red Square Jackahmmer 还是 Green Ovoid 之一。
我已经涉足 C# 的委托,并且感觉它们在这种情况下可能有用,但我不够熟悉,不知道如何在这种精确的场景中实现它们,而且我不确定它们是否正确选择给我我正在寻找的模块化行为。(在这方面我可能被 Javascript 宠坏了,你可以简单地覆盖对象上的函数)。
关于如何继续的任何想法或建议?我觉得可能有一个非常简单的解决方案,我在这一切中都忽略了。