using System;
using System.Collections.Generic;
using System.Text;
namespace EasyFactory
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("请输入运算符");
//调用工厂类生成一个Operater类型的对象
Operater ope=Factory.GetOperater(Console.ReadLine());
Console.WriteLine("请输入要运算的第一个数");
ope.NumberA = double.Parse(Console.ReadLine());
Console.WriteLine("请输入要运算的第二个数");
ope.NumberB= double.Parse(Console.ReadLine());
double result = ope.GetResult();
Console.WriteLine("运算结果是{0}",result);
}
}
class Operater
{
private double numberA;
public double NumberA
{
get { return numberA; }
set { numberA = value; }
}
private double numberB;
public double NumberB
{
get { return numberB; }
set { numberB = value; }
}
public virtual double GetResult()
{
double result = 0;
return result;
}
}
/// <summary>
/// 加法运算
/// </summary>
class Add : Operater
{
public override double GetResult()
{
double result = 0;
result = NumberA + NumberB;
return result;
}
}
/// <summary>
/// 减法运算
/// </summary>
class Sub : Operater
{
public override double GetResult()
{
double result = 0;
result = NumberA - NumberB;
return result;
}
}
/// <summary>
/// 乘法运算
/// </summary>
class Mul : Operater
{
public override double GetResult()
{
double result = 0;
result = NumberA * NumberB;
return result;
}
}
/// <summary>
/// 除法运算
/// </summary>
class Div : Operater
{
public override double GetResult()
{
double result = 0;
if (NumberB == 0)
{
throw new Exception("除数不能为0");
}
result = NumberA / NumberB;
return result;
}
}
/// <summary>
/// 工厂
/// </summary>
class Factory
{
private static Operater ope;
public static Operater GetOperater(string operater)
{
switch(operater)
{
case "+":
ope=new Add(); break;
case "-":
ope = new Sub(); break;
case "*":
ope = new Mul(); break;
case "/":
ope = new Div(); break;
}
return ope;
}
}
}