简单工厂模式(Simple Factory)
类图:

namespace SimpleFactoryPattern
{
/// <summary>
/// 简单工厂模式 by ldb
/// </summary>
public class Operation
{
private double _NumA = 0;
private double _NumB = 0;
public double NumA
{
get {return _NumA; }
set { _NumA = value; }
}
public double NumB
{
get { return _NumB; }
set { _NumB = value; }
}
public virtual double GetResult()
{
double result = 0;
return result;
}
}
class OperationAdd : Operation //加法类
{
public override double GetResult()
{
double result = 0;
result = NumA + NumB;
return result;
}
}
class OperationSub : Operation //减法类
{
public override double GetResult()
{
double result = 0;
result = NumA - NumB;
return result;
}
}
class OperationMul : Operation //加法类
{
public override double GetResult()
{
double result = 0;
result = NumA * NumB;
return result;
}
}
class OperationDiv : Operation //除法类
{
public override double GetResult()
{
double result = 0;
if (NumB == 0)
{
throw new Exception("除数不能为零!");
}
result = NumA / NumB;
return result;
}
}
/// <summary>
/// 简单工厂类
/// </summary>
public class OperationFactory
{
public static Operation CreateOperate(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;
}
}
class Program
{
static void Main(string[] args)
{
Operation oper = OperationFactory.CreateOperate("+");
oper.NumA = 5;
oper.NumB = 4;
double result = oper.GetResult();
Console.WriteLine("result:" + result);
Console.ReadKey();
}
}
}

浙公网安备 33010602011771号