简单工厂模式
简单工厂模式
实例:我要制作一个汽车,首先从一个螺丝和螺帽开始,如果让我来实现,我会这样写
1\首先定义一个螺丝类一个螺帽类
2\然后在客户端调用,创建螺帽
我会这样去实现
class Program { static void Main(string[] args) { Crew crew = new Crew(); crew.CreateCrew(); Console.ReadKey(); } } public class Crew { public void CreateCrew() { Console.WriteLine("创造了一个螺丝"); } } public class Nut { public void CreateNut () { Console.WriteLine("创建了一个螺帽"); } }
现在吗,功能虽然实现了,但是我还要创建别的东西,创建每个东西的时候,都要添加对应的类,我感到疲惫,不如把这个交给工厂来做吧,让我们找个小作坊吧
好了,现在找到一个小作坊,我想要的是,我告诉你我要什么,你给我什么就行,这种效果我就很满意了
小作坊是这样实现的.
1\我告诉老板,我想要个螺丝
2\老板刚好能做,说,好,生产给你
实现:
//定义一个抽象的产品类 public abstract class Product { public abstract void CreateProduct(); } //具体的产品类,螺丝 public class Screw : Product { public override void CreateProduct() { Console.WriteLine("生产了一个螺丝"); } } public class Nut : Product { public override void CreateProduct() { Console.WriteLine("生产了一个螺帽"); } } //小作坊 public class Factory { public Product CreateProduct(int type) { if (type==1) { Screw screw = new Screw(); return screw; } else if (type==2) { Nut nut = new Nut(); return nut; } else { return null; } } }
这样,我使用的时候,直接和老板说,我要螺丝就可以了
Factory factory = new Factory(); Product screw = factory.CreateProduct(1); screw.CreateProduct();
现在,我想要螺帽的时候,和老板说一声就行了.
这样比我刚才自己写的代码更进了一步,至少我不用管理这么多的产品了,而且一部分代码也得到了复用,但是问题还有,我还想要轮胎,小作坊老板说他不能生产,要生产的化需要升级设备,这很麻烦啊,得想想办法