在我理解中,工厂模式就是用来方便添加的,主要是运用了接口和虚函数的方法,来达到实现的目的,灵活性强。
using System;
using System.Collections.Generic;using System.Text;
namespace OOPTest
{
// 运算接口
interface IOperation
{
double GetResult(double numberA, double numberB);
}
//加法类
class OperationAdd : IOperation
{
public double GetResult(double numberA, double numberB)
{
double result = 0;
result = numberA + numberB;
return result;
}
}
//减法类
class OperationSub : IOperation
{
public double GetResult(double numberA, double numberB)
{
double result = 0;
result = numberA - numberB;
return result;
}
}
//乘法类
class OperationMul : IOperation
{
public double GetResult(double numberA, double numberB)
{
double result = 0;
result = numberA * numberB;
return result;
}
}
//除法类
class OperationDiv : IOperation
{
public double GetResult(double numberA, double numberB)
{
double result = 0;
if (numberB == 0)
throw new Exception("除数不能为0。");
result = numberA / numberB;
return result;
}
}
//运算类工厂
class OperationFactory
{
public static IOperation createOperate(string operate)
{
IOperation 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;
}
}
class Program
{
static void Main(string[] args)
{
try
{
Console.Write("请输入数字A:");
string strNumberA = Console.ReadLine();
Console.Write("请选择运算符号(+、-、*、/):");
string strOperate = Console.ReadLine();
Console.Write("请输入数字B:");
string strNumberB = Console.ReadLine();
IOperation oper = OperationFactory.createOperate(strOperate);
double result = oper.GetResult(double.Parse(strNumberA), double.Parse(strNumberB));
Console.WriteLine("结果是:" + result.ToString());
Console.ReadLine();
}
catch (Exception ex)
{
Console.WriteLine("您的输入有错:" + ex.Message);
Console.ReadLine();
}
}
}
}