简单工厂模式
这是开始学习设计模式的第一步,也是相对简单的一个设计模式,简单工厂设计模式。
简单工厂就是将业务进行封装,减少代码之间的耦合度,使代码更易于扩展和维护。
以下是简单工厂设计模式的图解:
解释:封装一个简单工厂,然后通过调用该简单工厂中封装的对象,进行相应的传参,已达到调用指定父类中的子类的调用方法。这是引用到了C#中的李氏转换原则。
这是我自己的见解,也是初次接触可能不是很正确,下面附上专业的解释:
【引用:】简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。
下面通过贴代码进行对应的学习:
(我这里是通过练习一个计算机的面向对象设计)
1、 先建立父类
//父类
public class Option
{
private double number_01;
public double Number_01 { get; set; } //第一个数
private double number_02;
public double Number_02 { get; set; } //第二个数
public virtual double GetResult() //这是一个抽象的方法,用来被之类重写
{
double result = 0;
return result;
}
}
2、创建工厂中的对象:(我这里是用了计算器的例子,就创建4个 + – * /)
//加号类:
public class AddOption:Option
{
public override double GetResult()
{
double result = 0;
result = Number_01 + Number_02;
return result;
}
}
//减号类:
public class SubOption:Option
{
public override double GetResult()
{
double result = 0;
result = Number_01 – Number_02;
return result;
}
}
//乘号类:
public class MultiplyOption:Option
{
public override double GetResult()
{
double result = 0;
result = Number_01 * Number_02;
return result;
}
}
//除号类:
public class DivideOption:Option
{
public override double GetResult()
{
double result = 0;
if (Number_02 == 0)
throw new Exception(“除数不能为0”);
result = Number_01 / Number_02;
return result;
}
}
3、然后是创建简单工厂的核心,简单工厂类:
public class OptionFactory
{
public static Option CreateOption(string option)
{
Option oper = null;
switch (option)
{
case “+”:
oper = new AddOption();
break;
case “-“:
oper = new SubOption();
break;
case “*”:
oper = new MultiplyOption();
break;
case “/”:
oper = new DivideOption();
break;
}
return oper;
}
}
4、到这一步,简单工厂就已经完成了,接下来就是调用了,下面简单的调用下,理解下用法:
static void Main(string[] args)
{
Option oper;
oper = OptionFactory.CreateOption(“+”);
oper.Number_01 = 10;
oper.Number_02 = 25;
double result = oper.GetResult();
Console.WriteLine( result);
Console.ReadLine();
}
在这里帮上面的代码花了一个简单的解释图:
5、总结:简单工厂设计模式是比较基础的,同时也是用的相对较多的,希望我的学习可以帮到大家,如果代码中有错误也请大佬批评指出。