C#设计模式之简单工厂模式
operation.cs:
using System;
using System.Collections.Generic;
using System.Text;
namespace Design_Patten
{
public class Operation
{
private double _numberA;
private double _numberB;
public double NumberA
{
get {return _numberA;}
set { _numberA = value; }
}
public double NumberB
{
get { return _numberB; }
set { _numberB = value; }
}
public virtual double GetResult()
{
double result = 0;
return result;
}
}
class OperateAdd : Operation
{
public override double GetResult()
{
double result = 0;
result = NumberA + NumberB;
return result;
}
}
class OperateSub : Operation
{
public override double GetResult()
{
double result = 0;
result = NumberA - NumberB;
return result;
}
}
class OperateMul : Operation
{
public override double GetResult()
{
double result = 0;
result = NumberA * NumberB;
return result;
}
}
class OperateDiv : Operation
{
public override double GetResult()
{
double result = 0;
if(NumberB==0)
throw new Exception("除数不能为0");
result = NumberA / NumberB;
return result;
}
}
}
operationfactory.cs:(关键所在)
using System;
using System.Collections.Generic;
using System.Text;
namespace Design_Patten
{
public class OperateFactory
{
public static Operation CreateOperate(string oper)
{
Operation ope = null;
switch(oper)
{
case "+":
ope = new OperateAdd();
break;
case "-":
ope=new OperateSub();
break;
case "*":
ope=new OperateMul();
break;
case "/":
ope=new OperateDiv();
break;
}
return ope;
}
}
}
主函数:
Operation ope = OperateFactory.CreateOperate("+");
ope.NumberA = 9;
ope.NumberB = 3;
double result=ope.GetResult();
Console.WriteLine("{0}",result);
浙公网安备 33010602011771号