本处以实现加减乘除来作为例子演示下简单工厂模式的运用
首先在不使用任何设计模式时如下:
///
/// 实现加减乘除运算的方法
///
///
///
///
///
public static double CalFunc(double a,double b,string type)
{
double c = 0;
switch (type)
{
case "+":
c = a + b;
break;
case "-":
c = a - b;
break;
case "*":
c = a * b;
break;
case "/":
c = a / b;
break;
}
return c;
}
使用简单工厂模式如下:
///
/// 基类
///
public class Cal
{
private double a;
public double A
{
get { return a; }
set { a = value; }
}
private double b;
public double B
{
get { return b; }
set { b = value; }
}
public virtual double Operate()
{
double result = 0;
return result;
}
}
public class CalAdd : Cal
{
public override double Operate()
{
return A + B;
}
}
public class CalSub : Cal
{
public override double Operate()
{
return A - B;
}
}
public class CalMulti : Cal
{
public override double Operate()
{
return A * B;
}
}
public class CalDiv : Cal
{
public override double Operate()
{
return A / B;
}
}
///
/// 工厂类
///
public class CalFactory
{
public static Cal GetCalResult(string type)
{
Cal cal = null;
switch (type)
{
case "+":
cal = new CalAdd();
break;
case "-":
cal = new CalSub();
break;
case "*":
cal = new CalMulti();
break;
case "/":
cal = new CalDiv();
break;
}
return cal;
}
}
调用方式如下:
Cal c=CalFactory.GetCalResult("+");
c.A=3;
c.B=2;
double result = c.Operate();
总结:定义一个工厂类并实现静态的方法根据输入的参数返回具体的对象类