简单工厂模式

Posted qiushuizh

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了简单工厂模式相关的知识,希望对你有一定的参考价值。

简单工厂模式

    实例:我要制作一个汽车,首先从一个螺丝和螺帽开始,如果让我来实现,我会这样写

  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();

现在,我想要螺帽的时候,和老板说一声就行了.

这样比我刚才自己写的代码更进了一步,至少我不用管理这么多的产品了,而且一部分代码也得到了复用,但是问题还有,我还想要轮胎,小作坊老板说他不能生产,要生产的化需要升级设备,这很麻烦啊,得想想办法

以上是关于简单工厂模式的主要内容,如果未能解决你的问题,请参考以下文章

设计模式学习——简单工厂模式工厂模式抽象工厂模式

PHP面向对象之选择工厂和更新工厂

设计模式-简单工厂工厂方法模式抽象工厂模式详解

设计模式之简单工厂模式

C++工厂模式(简单工厂工厂方法抽象工厂)

C++工厂模式(简单工厂工厂方法抽象工厂)