- 设计模式的几篇文章本来是准备连续发得。但是无奈中间插了个新的需求就临时先记录了一下遇到的上篇文章中的问题。
- 今天开始写工厂设计模式
- 说到工厂设计模式,字面上先理解一波。“工厂”——生活中就是建造一些产品地方。比如我就先前就职于全国五百强工厂–“富士康”,并出任流水线产品监督审核要职。还有就是现今如日中天的“特斯拉”超级工厂。当然也还有一些小一点“江南皮革厂”经常带小姨子跑路,跑不跑路我们先不论,我们主要讨论的是为什么每次都要带上小姨子。。。
- 言归正传——简单工厂(江南皮革厂)
- 说明:抽象就是实现工厂模式的主要手段,所以这里我们要使用简单工厂首先我们先将工厂所生成的产品抽象出来。
- 这里我们先用 引入生产汽车这个例子。 汽车就是我们要抽象出来的东西。
- 抽象汽车接口,然后里面有三个汽车的基本方法,开、关、驾驶车辆。
namespace SimpleFactory
{
public interface ICar
{
void OpenCar();
void CloseCar();
void OperaCar();
}
}
- 然后呢我们要建造工厂来生产车辆,这里为了更好的理解,我就先建造两个生产汽车的工厂。工厂类实现了抽象的接口
- 五菱汽车工厂
namespace SimpleFactory
{
public class WlCar : ICar
{
public void CloseCar()
{
Console.WriteLine("锁上我的五菱之光");
}
public void OpenCar()
{
Console.WriteLine("打开我的五菱爱车");
}
public void OperaCar()
{
Console.WriteLine("五菱开上了高速,这不是去幼儿园的车");
}
}
}
namespace SimpleFactory
{
public class BydCar : ICar
{
public void CloseCar()
{
Console.WriteLine("锁上我的比亚迪-唐");
}
public void OpenCar()
{
Console.WriteLine("打开我的比亚迪-唐");
}
public void OperaCar()
{
Console.WriteLine("驾驶比亚迪-唐到最近的洗脚店");
}
}
}
namespace SimpleFactory
{
public class CarFactory
{
public static ICar GetCar(string carname)
{
if (carname.Equals("wuling"))
{
return new WlCar();
}
else if (carname.Equals("byd"))
{
return new BydCar();
}
return null;
}
}
}
- 为了更好的理解我们再来画图理解一波。就是你需要一辆汽车,驾驶这辆车可以开上高速可以开去洗脚店。并且呢你还有自己想要开的车型。所以当你想要买一辆车的时候,你只要去汽车商城大声喊出你要驾驶的汽车名称,刷卡付钱之后你就可以拥有一辆自己想要的车车。上图。
- 简单工厂就是这样。通过一个工厂实现你要东西。
- 最后—
加油,西红柿!