一、定义
- 简单工厂设计模式,又称静态工厂方法,不属于23中设计模式。
- 是由工厂决定创建出哪一种产品类的实例,是工厂模式家族中最简单的模式。
二、代码展示
计算机的加减乘除
代码语言:javascript复制public interface ICalculator
{
public double GetResult(double d1,double d2);
}
public class Add:ICalculator
{
public double GetResult(double d1,double d2)
{
return d1 d2;
}
}
public class Sub:ICalculator
{
public double GetResult(double d1,double d2)
{
return d1-d2;
}
}
public class Mul:ICalculator
{
public double GetResult(double d1,double d2)
{
return d1*d2;
}
}
public class Div:ICalculator
{
public double GetResult(double d1,double d2)
{
return d1/d2;
}
}
代码语言:javascript复制publci static void Main(string[]args)
{
Console.WriteLine("请输入操作数1");
double d1=Convert.Todouble(Console.ReadLine());
Console.WriteLine("请输入操作数2");
double d2=Convert.Todouble(Console.ReadLine());
Console.WriteLine("请输入操作符");
string oper=Console.ReadLine();
ICalculator cal=null;
switch(oper)
{
case" ":
cal=new Add();
break;
case"-":
cal=new Sub();
break;
case"*":
cal=new Mul();
break;
case"/":
cal=new Div();
break;
}
double ret=cal.GetResult(d1,d2);
Console.ReadKey();
//静态工厂方法,把创建对象的过程封装到静态方法中,在客户端直接调用方法,实现客户端和创建对象的解耦,明确职责
}
三、静态工厂方法代码
代码语言:javascript复制//静态工厂方法,把创建对象的过程封装到静态方法中,在客户端直接调用方法,实现客户端和创建对象的解耦,明确职责
public class CalFactory
{
public static ICalculator(string oper)
{
ICalculator cal=null;
switch(oper)
{
case" ":
cal=new Add();
break;
case"-":
cal=new Sub();
break;
case"*":
cal=new Mul();
break;
case"/":
cal=new Div();
break;
}
}
}
四、简单工厂模式的优缺点
- 优点
1、简单工厂模式解决了客户端直接依赖于具体对象的问题,客户端消除了创建对象的责任,仅仅承担使用的责任。实现了责任的分割
2、简单工厂也实现了代码复用。
- 缺点
1、系统扩展困难,一旦加入新功能,就必须修改工厂逻辑;
2、简单工厂集合了所有创建对象的逻辑,一旦不能正常工作,会导致整个系统出现问题。
老赵Net学习笔记