我想重构代码以使用多态性而不是if-else。我可以使用如果..还。但我想在这里使用多态性。
谁能告诉我?
public class Calculator
{
public int Calculate(int a, int b, Operation operation)
{
switch(operation)
{
case "add":
return a+b;
case "subtract":
return a-b;
case "multiply":
return a*b;
default:
throw new Exception("Unknown Operation Type");
}
}
public class Operation
{
public string Type { get; set; }
}
据我了解,可以使用多态性实现操作的选择,如下所示。首先,为操作定义一个接口。
public interface IOperation
{
int Operate(int a, int b);
}
接下来,将使用与实际实现相同的接口实现不同的类。
public class Addition : IOperation
{
public int Operate(int a, int b){ return a + b; }
}
public class Subtraction : IOperation
{
public int Operate(int a, int b){ return a - b; }
}
public class Multiplication : IOperation
{
public int Operate(int a, int b){ return a * b; }
}
由于在初始问题中也这样做了,因此实际操作可以通过以下函数执行。
public int Calculate(int a, int b, IOperation iOp)
{
return iOp.Operate(a, b);
}
我想你要求这样的东西。但由于背景信息有限,这只是猜测。
public int Calculate(int a, int b, Operation operation)
{
if(operation == "add")
return Add(a, b);
if(operation == "sub")
return Sub(a,b);
return 0;
}
private int Add(int a, int b) { return a + b; }