用一个简单的C#示例来学习掌握工厂方法设计模式

相关概念

工厂方法是创造性设计模式,即与对象创建有关。 在工厂方法中,我们创建对象而不将创建逻辑暴露给客户端,并且客户端使用相同的公共接口来创建新类型的对象。

我们的想法是使用静态成员函数(静态工厂方法)来创建和返回实例,从而隐藏用户的类模块的细节。

工厂方法是创建对象的核心设计原则之一,允许客户端以某种方式创建库的对象(如下所述),使其不与库的类层次结构紧密耦合。

理解工厂模式

让我们用一个例子来理解它:
工厂方法UML

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public abstract class Vehicle
{
public abstract void PrintVerhicleInfo();
}
public class TwoWheeler : Vehicle
{
public override void PrintVerhicleInfo()
{

Console.WriteLine("这是两轮车");
}
}

public class FourWheeler : Vehicle
{
public override void PrintVerhicleInfo()
{
Console.WriteLine("这是四轮车");
}
}

VehicleFactory类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class VehicleFactory
{

private static Vehicle _vehicle;
public static Vehicle CreateVehicle(int type)
{
switch (type)
{
case 1:
_vehicle = new TwoWheeler();
break;
case 2:
_vehicle = new FourWheeler();
break;
}
return _vehicle;
}
}

客户端调用:

1
2
3
4
5
6
7
8
9
10
class Program
{
static void Main(string[] args)
{
//通过工厂创建类的实例,隐藏对象的创建过程
Vehicle vehicle = VehicleFactory.CreateVehicle(1);
vehicle.PrintVerhicleInfo();
Console.ReadKey();
}
}

输出:

1
这是两轮车

在上面的示例中,Factory类在内部方法中根据输入的type来创建TwoWheeler或者FourWheeler的对象。如果现在有一个新的类ThreeWheeler,只需要在工厂中加入一个分支,重新编译工厂就可以了,客户端不需要调整。

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×