码迷,mamicode.com
首页 > Windows程序 > 详细

C#工厂模式之简单工厂

时间:2019-03-20 16:01:06      阅读:539      评论:0      收藏:0      [点我收藏+]

标签:增加   源码   alc   factor   static   cto   实现   stat   调用   

工厂模式是用工厂方法代替new操作的一种模式。工厂方法封装了多个相关联类的new方法,每次实例化这些类的时候不需要new多次,只需要调用工厂类的对应方法即可实例化这些类,并且是通过使用一个共同的接口来指向新创建的对象。

简单工厂模式是类的创建模式,又叫做静态工厂方法模式。就是由一个工厂类根据传入的参量决定创建出哪一种产品类的实例。一般涉及到三种角色。

简单工厂模式优缺点: 
模式的核心是工厂类,这个类负责产品的创建,而客户端可以免去产品创建的责任,这实现了责任的分割。但由于工厂类集中了所有产品创建逻辑的,如果不能正常工作的话会对系统造成很大的影响。如果增加新产品必须修改工厂角色的源码。

简单工厂模式由三种角色组成:
1、工厂类角色:这是本模式的核心,含有一定的商业逻辑和判断逻辑,根据逻辑不通,产生具体的工厂产品。
2、抽象产品角色:它一般是具体产品继承的父类或者实现的接口。
3、具体产品角色:工厂类所创建的对象就是此角色的实例。

简单工厂模式C#代码举例:

下面是利用简单工厂创建的计算器:

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;
}
}

下面是测试结果:

技术图片

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

C#工厂模式之简单工厂

标签:增加   源码   alc   factor   static   cto   实现   stat   调用   

原文地址:https://www.cnblogs.com/HanHeng/p/10565274.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!