一、定义
二、代码展示
计算机的加减乘除
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;
}
}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();
//静态工厂方法,把创建对象的过程封装到静态方法中,在客户端直接调用方法,实现客户端和创建对象的解耦,明确职责
}三、静态工厂方法代码
//静态工厂方法,把创建对象的过程封装到静态方法中,在客户端直接调用方法,实现客户端和创建对象的解耦,明确职责
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学习笔记
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。