简单工厂模式,从字面上看,这个模式就像一个工厂,工厂是干什么的呢?它是用来根据客户的要求来生产东西的。比如客户要求工厂生产一个面包,工厂就会给客户来生产一个面包。至于工厂为什么会生产面包,当然是工厂本身或者和它有关系的工厂有生产面包这个方法,如果没有这个方法,客户再怎么要求,那也是生产不出来的。
using System;
namespace 简单工厂模式
{
class Program
{
static void Main(string[] args)
{
Operation oper;
oper = OperationFactory.createOperation("/");
oper.NumberA = 1;
oper.NumberB = 2;
Console.WriteLine(oper.GetResult());
Console.ReadKey();
}
}
// 工厂类,根据客户的要求来实例化不同的对象
public class OperationFactory
{
public static Operation createOperation(string operation)
{
Operation oper = null;
switch (operation)
{
case "+":
oper = new OperationAdd();
break;
case "-":
oper = new OperationSub();
break;
case "*":
oper = new OperationMul();
break;
case "/":
oper = new operationDiv();
break;
}
return oper;
}
}
public class Operation
{
public double NumberA { get; set; }
public double NumberB { get; set; }
public virtual double GetResult()
{
double result = 0;
return result;
}
}
//具体的产品
class OperationAdd : Operation
{
public override double GetResult()
{
return NumberA + NumberB;
}
}
//具体的产品
class OperationSub : Operation
{
public override double GetResult()
{
return NumberA - NumberB;
}
}
//具体的产品
class OperationMul : Operation
{
public override double GetResult()
{
return NumberA * NumberB;
}
}
//具体的产品
class operationDiv : Operation
{
public override double GetResult()
{
if (NumberB == 0)
{
throw new Exception("除数不能为0。");
}
return NumberA / NumberB;
}
}
}
以上代码的好处就是可以非常容易的理解,方便的增加新的方法,比如开平方运算。