简单工厂模式

简单工厂模式的目的主要是用来创建对象。工厂是对对象创建过程的封装,不需要使用者自己去创建对象了,工厂模式可以通过现实中的工厂来理解,比如我要一部车,你可以自己做(但是你不怎么想),也可以交给工厂给你做。工厂可以把这个事情做好,然后给你想要的车,前提是你要告诉工厂具体的产品名称,必要的参数等等。

如汽车厂(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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值