1、简单工厂的意图:根据提供给他的数据参数,返回几个可能类中的一个类的实例。
2、简单工厂示例
Operation类
using System;
/// <summary>
/// Summary description for Operation Class
/// </summary>
public class Operation
{
public double _NumberA;
public double _NumberB;
public double NumberA
{
set
{
_NumberA = value;
}
get
{
return _NumberA;
}
}
public double NumberB
{
set
{
_NumberB = value;
}
get
{
return _NumberB;
}
}
public virtual double GetResult()
{
double result = 0;
return result;
}
}
加减乘除类
using System;
/// <summary>
/// Summary description for ConcreteOperation Class
/// </summary>
public class OperationAdd:Operation
{
public override double GetResult()
{
double result = 0;
result = _NumberA + _NumberB;
return result;
}
}
public class OperationSub : Operation
{
public override double GetResult()
{
double result = 0;
result = _NumberA - _NumberB;
return result;
}
}
public class OperationMul : Operation
{
public override double GetResult()
{
double result = 0;
result = _NumberA * _NumberB;
return result;
}
}
public class OperationDiv : Operation
{
public override double GetResult()
{
double result = 0;
if (_NumberB == 0)
{
throw new Exception("被除数不能为0");
}
result = _NumberA / _NumberB;
return result;
}
}
简单工厂类
using System;
/// <summary>
/// Summary description for Class1
/// </summary>
public class simplefactory
{
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;
}
}
客户端代码
using System;
using System.Collections.Generic;
using System.Text;
namespace simplefactory1
{
class Program
{
static void Main(string[] args)
{
Operation oper;
oper = simplefactory.CreateOperate("+");
oper.NumberA = 30;
oper.NumberB = 40;
double result = oper.GetResult();
}
}
}
参考文献:
《大话设计模式》