标签:增加 源码 alc factor static cto 实现 stat 调用
工厂模式是用工厂方法代替new操作的一种模式。工厂方法封装了多个相关联类的new方法,每次实例化这些类的时候不需要new多次,只需要调用工厂类的对应方法即可实例化这些类,并且是通过使用一个共同的接口来指向新创建的对象。
简单工厂模式是类的创建模式,又叫做静态工厂方法模式。就是由一个工厂类根据传入的参量决定创建出哪一种产品类的实例。一般涉及到三种角色。
简单工厂模式优缺点:
模式的核心是工厂类,这个类负责产品的创建,而客户端可以免去产品创建的责任,这实现了责任的分割。但由于工厂类集中了所有产品创建逻辑的,如果不能正常工作的话会对系统造成很大的影响。如果增加新产品必须修改工厂角色的源码。
简单工厂模式由三种角色组成:
1、工厂类角色:这是本模式的核心,含有一定的商业逻辑和判断逻辑,根据逻辑不通,产生具体的工厂产品。
2、抽象产品角色:它一般是具体产品继承的父类或者实现的接口。
3、具体产品角色:工厂类所创建的对象就是此角色的实例。
下面是利用简单工厂创建的计算器:
static void Main(string[] args)
{
/*工厂模式之简单工厂:把对象当成产品去创建*/
Console.WriteLine("请输入运算");
int a = 5;
int b = 3;
string ys = Console.ReadLine();
ICalc calc = Factory.GetCalc(ys);
Console.WriteLine(calc.Calc(a, b));
Console.ReadLine();
}
//工厂方法类
public class Factory
{
public static ICalc GetCalc(string ys)
{
ICalc calc = null;//产品变量
switch (ys)
{
case "+":
calc = new Jia();
break;
case "-":
calc = new Jian();
break;
case "*":
calc = new Cheng();
break;
case "/":
calc = new Chu();
break;
default:
break;
}
return calc;
}
}
//产品接口
public interface ICalc
{
double Calc(int a, int b);
}
public class Jia : ICalc
{
public double Calc(int a, int b)
{
return a + b;
}
}
public class Jian : ICalc
{
public double Calc(int a, int b)
{
return a - b;
}
}
public class Cheng : ICalc
{
public double Calc(int a, int b)
{
return a * b;
}
}
public class Chu : ICalc
{
public double Calc(int a, int b)
{
return a * 1.0 / b;
}
}
下面是测试结果:
标签:增加 源码 alc factor static cto 实现 stat 调用
原文地址:https://www.cnblogs.com/HanHeng/p/10565274.html