public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btn_Equal_Click(object sender, EventArgs e)
{
Operation oper = OPerationFactory.createFactory(cb_Operator.SelectedItem.ToString());
double number = 0;
if(double.TryParse(tb_Number1.Text,out number))
{
oper.NumberA = number;
}
if (double.TryParse(tb_Number2.Text, out number))
{
oper.NumberB = number;
}
number = oper.Result();
tb_Result.Text = number.ToString();
}
}
abstract class Operation
{
private double _numberA;
private double _numberB;
public double NumberA
{
set { _numberA = value; }
get { return _numberA; }
}
public double NumberB
{
set { _numberB = value; }
get { return _numberB; }
}
public virtual double Result()
{
double result = 0;
return result;
}
}
//加
class OperationAdd : Operation
{
public override double Result()
{
return NumberA + NumberB;
}
}
//减
class OperationSub : Operation
{
public override double Result()
{
return NumberA - NumberB;
}
}
//乘
class OperationMul : Operation
{
public override double Result()
{
return NumberA * NumberB;
}
}
//除
class OperationDiv : Operation
{
public override double Result()
{
if (NumberB == 0)
throw new Exception("除数不能为0!");
return NumberA / NumberB;
}
}
//工厂
class OPerationFactory
{
public static Operation createFactory(string operate)
{
Operation oper = null;
switch (operate)
{
case "+":
oper = new OperationAdd();
break;
case "-":
oper = new OperationSub();
break;
case "*":
oper = new OperationMul();
break;
case "/":
oper = new OperationDiv();
break;
}
return oper;
}
}