简单工厂模式:
又称为静态工厂方法模式,它属于类创建型模式。在简单工厂模式中,一个抽象的产品类,可以派生出多个具体的产品类,它们都具有共同的父类。
模式构成:
工厂类:工厂类是我们的核心类,它负责创建所有实例的内部逻辑,工厂类可以直接被调用创建我们的产品实例。
抽象产品类:简单工厂模式所创建的所有对象的父类,它负责描述所有实例所拥有的公共接口。
具体产品类:简单工厂所创建的具体的实例对象。
适用场景:
工厂类负责创建的对象比较少,由于创建的对象较少,不会造成工厂方法中的业务逻辑太过复杂。
客户端只知道传入工厂类的参数,对于如何创建对象并不关心。**
`计算器示例:
1.抽象一个基类,提供一个计算方法;
//Operation 运算类
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;
}
}
2、创建子类基础该基类,例如加法、减法等子类,同时实现计算结果方法(代码此处省略。。。)
3、创建运算工厂类,定义一个工厂接口用于实现生成算法。
//简单运算工厂类
public class OperationFactory
{
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;
default:
Console.WriteLine("输入运算符有误!!!");
break;
}
return oper;
}
}
4、在主界面生成客户端代码
//客户端代码
class Program
{
static void Main(string[] args)
{
Operation oper;
oper = OperationFactory.createOperate("+");
oper.NumberA = 4;
oper.NumberB = 8;
double result = oper.GetResult();
Console.WriteLine("结果是:" + result);`
}
}
5、简单工厂模式—类图