定义:
FactoryMethod
工厂方法模式:定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。
客户端
static void Main(string[] args)
{
IFactory operFactory = new AddFactory();
Operation oper = operFactory.CreateOperate();
oper.NumberA = 5;
oper.NumberB = 3;
Console.WriteLine("result:" + oper.GetResult());
Console.Read();
}
工厂
interface IFactory
{
Operation CreateOperate();
}
class AddFactory : IFactory
{
public Operation CreateOperate()
{
return new OperateAdd();
}
}
class SubFactory : IFactory
{
public Operation CreateOperate()
{
return new OperateSub();
}
}
class MulFactory : IFactory
{
public Operation CreateOperate()
{
return new OperateMul();
}
}
class DivFactory : IFactory
{
public Operation CreateOperate()
{
return new OperateDiv();
}
}
class Operation
{
private double _numberA;
private double _namberB;
public double NumberA
{
get { return _numberA; }
set { _numberA = value; }
}
public double NumberB
{
get { return _namberB; }
set { _namberB = value; }
}
public virtual double GetResult()
{
double result=0;
return result;
}
}
class OperateAdd:Operation
{
public override double GetResult()
{
double result = NumberB + NumberA;
return result;
}
}
class OperateSub : Operation
{
public override double GetResult()
{
double result = NumberA - NumberB;
return result;
}
}
class OperateMul : Operation
{
public override double GetResult()
{
double 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;
}
}