简单工厂
做一个简单计算器,输入两个数字和运算符,计算结果。
public abstract class Operate
{
public double NumberOne { get; set; }
public double NumberTwo { get; set; }
public abstract double GetResult();
}
public class OperateAdd : Operate
{
public override double GetResult()
{
return NumberOne + NumberTwo;
}
}
public class OperateSub : Operate
{
public override double GetResult()
{
return NumberOne - NumberTwo;
}
}
public class OperateMul : Operate
{
public override double GetResult()
{
return NumberTwo * NumberTwo;
}
}
public class OperateDiv : Operate
{
public override double GetResult()
{
if (NumberTwo == 0)
throw new Exception("除数不能为0!");
return NumberOne / NumberTwo;
}
}
public class OperateFactory
{
public static Operate CreateOperate(string ope)
{
Operate operate = null;
switch(ope)
{
case "+":
operate = new OperateAdd();
break;
case "-":
operate = new OperateSub();
break;
case "*":
operate = new OperateMul();
break;
case "/":
operate = new OperateDiv();
break;
default:
throw new Exception("运算符不合法!");
}
return operate;
}
}
class Program
{
static void Main(string[] args)
{
Operate ope;
Console.WriteLine("请输入第一个数:");
double numOne = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("请输入第二个数:");
double numTwo = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("请输入运算符:");
string op = Console.ReadLine();
ope = OperateFactory.CreateOperate(op);
ope.NumberOne = numOne;
ope.NumberTwo = numTwo;
double res= ope.GetResult();
Console.WriteLine("结果为:{0}", res);
Console.ReadKey();
}
}

浙公网安备 33010602011771号