简单工厂模式的组成:
抽象类:即父类。
具体类:有具体操作的类。继承了抽象类。
工厂类:通过工厂,客户端可以直接使用具体类。
工厂就是用来加工产品的地方,我客户端只要输入一个东西,工厂就去调用相应的方法,就可以得到输出的结果。看一下具体的工作流程。
父类:(运算类)
public class Operation//运算类
{
private double numberA = 0;
private double numberB = 0;
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 OperationAdd :Operation//加法类进行继承
{
public override double GetResult()
{
double result = 0;
result = NumberA + NumberB;
return result;
}
}
class OperationSub :Operation//减法继承类
{
public override double GetResult()
{
double result = 0;
result = NumberA - NumberB;
return result;
}
}
工厂类:
public class OperationFactory
{
public static Operation createOperate(string operate)
{
Operation oper = null;
switch(operate)
{
case "+": oper = new OperationAdd();
break;
case "-": oper = new OperationSub();
break;
}
return oper;
}
}
客户端:
static void Main(string[] args)
{
Operation oper;
oper = OperationFactory.createOperate("+");
oper.NumberA = 1;
oper.NumberB = 2;
double result = oper.GetResult();
Console.WriteLine(result);
Console.ReadKey();
}
通过F11调试,我们可以看一下它的工作流程:
1、将“+”给工厂类的参数 operate
2、得知调用的是加法类OperateAdd
3、将其给oper,并且返回oper
4、然后使用 OperateAdd的方法GetResult()
5、返回结果result。
对工厂模式还没有太深的了解,欢迎大家纠正,共同进步。