using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
/*简单工厂模式,工厂类返回一个子类对象*/
/*
* 应用场景
* 1,当工厂类负责创建的对象比较少时可以考虑使用简单工厂模式
* 2,客户如果只知道传入工厂类的参数,对于如何创建对象的逻辑不关心时可以考虑使用简单工厂模式
*/
namespace 简单工厂模式
{
//抽象一个娱乐场
public abstract class Carnie
{
public abstract void GetTicket();
}
//具体到一个项目:海盗船
public class PirateShip:Carnie
{
public override void GetTicket()
{
Console.WriteLine("获取到了海盗船项目的门票!");
}
}
//具体到一个项目:碰碰车
public class Dodgems:Carnie
{
public override void GetTicket()
{
Console.WriteLine("获取到了碰碰车项目的门票!");
}
}
public class CarnieFactory
{
public static Carnie GetProject(string project)
{
Carnie carnie=null;
if(project=="海盗船")
{
carnie = new PirateShip();
}
else if(project=="碰碰车")
{
carnie = new Dodgems();
}
return carnie;
}
}
class Program
{
public static Carnie GetProject(string project)
{
Carnie carnie = null;
if (project == "海盗船")
{
carnie = new PirateShip();
}
else if (project == "碰碰车")
{
carnie = new Dodgems();
}
return carnie;
}
static void Main(string[] args)
{
Console.WriteLine("********不用简单工厂模式********");
Carnie carnie = GetProject("碰碰车");
carnie.GetTicket();
carnie = GetProject("海盗船");
carnie.GetTicket();
Console.WriteLine("*********简单工厂模式********");
carnie = CarnieFactory.GetProject("碰碰车");
carnie.GetTicket();
carnie = CarnieFactory.GetProject("海盗船");
carnie.GetTicket();
Console.ReadKey();
}
}
}
可能是因为经验的问题,个人对简单工厂模式的理解不够,没有发觉它的特别优势是什么,总结下,就是一个单位下有很多的职能部门,而工厂就是这些部门的管理者,当客户需要什么服务时,只需要告诉管理者需求,然后管理者根据需求找到对应的部门取出你需要的东西,而不需要你自己去找。
边学习边总结,加深理解!