简单工厂模式的目的主要是用来创建对象。工厂是对对象创建过程的封装,不需要使用者自己去创建对象了,工厂模式可以通过现实中的工厂来理解,比如我要一部车,你可以自己做(但是你不怎么想),也可以交给工厂给你做。工厂可以把这个事情做好,然后给你想要的车,前提是你要告诉工厂具体的产品名称,必要的参数等等。
如汽车厂(CarFactory)可以生产汽车(Car),包括就有宝马、奔驰、大众等等;通过对这些车抽象至都是“车”(Car)这个抽象的模型,这个汽车工厂当然可以制作很多种类,具体多少种得看当前这个车概念下有多少种车了(继承“车”这个模型的类的种类),当然也不一定全要生产(看具体这个工厂提供哪些了,CarFactory中能实例化多少种类)。
当我们想要一辆宝马,我们告诉工厂给我一辆宝马车,然后工厂会调用宝马车制造流水线制造它并提供给你,加入你说给我一辆自行车,不好意思,我们不生产(其实是自行车没有继承Car罢了)。具体代码如下所示(C#):
/*
*---------------------------------
*| All rights reserved.
*| author: lizhanping
*| version:1.0
*| File: SimpleFactory.cs
*| Summary:
*| Date: 2019/3/8 15:29:44
*---------------------------------
*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace DesignPatternTest
{
/// <summary>
/// 抽象的车
/// </summary>
public abstract class Car
{
/// <summary>
/// 车都有run这个功能(方法)
/// </summary>
public abstract void Run();
}
/// <summary>
/// 奔驰车
/// </summary>
public class BenzCar : Car
{
public override void Run()
{
Console.WriteLine("Benz is running...");
}
}
/// <summary>
/// 宝马车
/// </summary>
public class BmwCar : Car
{
public override void Run()
{
Console.WriteLine("Bwm is running...");
}
}
/// <summary>
/// 制造车的工厂
/// </summary>
public class CarFactory
{
/// <summary>
/// 制造车的方法
/// </summary>
/// <param name="carName">告诉我你要什么车</param>
/// <returns></returns>
public static Car CreateMyCar(string carName)
{
if (carName == null)
return null;
if (carName.Equals("Benz"))
return new BenzCar();
if (carName.Equals("Bmw"))
return new BmwCar();
return null;
}
}
}
然后测试代码,新建控制台项目,在Program.cs文件中:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace DesignPatternTest
{
class Program
{
static void Main(string[] args)
{
Car myCar = CarFactory.CreateMyCar("Benz");
myCar.Run();
Console.ReadKey();
}
}
}
输出结果:
来源:https://www.cnblogs.com/chyshx/p/10496365.html