工厂方法模式

简单工厂模式将产品封装起来,这样我们只需要告诉工厂我需要什么产品,你给我生产什么产品就可以,

但是,我现在想要生产一个轮胎,目前的工厂都不能生产,那么,我要么给钱,让这个工厂可以生产轮胎,但这样费用太高,那我们使用另一个办法,找一个新的工厂.这样,我们就有必要把工厂给抽象出来.

1\抽象工厂类,每个工厂生产自己的产品

 public abstract class FactoryAll
    {
        public abstract Product CreateProduct();
    }

    public class ScrewFactory : FactoryAll
    {
        public override Product CreateProduct()
        {
            Product screw = new Screw();
            return screw;
        }
    }
    public class NutFactory : FactoryAll
    {
        public override Product CreateProduct()
        {
            Product nut = new Nut();
            return nut;
        }
    }

这样,我们想要什么产品,只需要找对应的工厂就可以了,没有轮胎工厂,没关系,我们找一个轮胎工厂,就可以了

 public class TireFactory : FactoryAll
    {
        public override Product CreateProduct()
        {
            Product tire = new Tire();
            return tire;
        }
    }

现在,我们找到了一个工厂可以生产轮胎,那我们就可以告诉这个工厂,我需要一个轮胎

  static void Main(string[] args)
        {
            FactoryAll screwFactory = new ScrewFactory();
            Product screw= screwFactory.CreateProduct();
            screw.PrintProduct();

            FactoryAll tireFactroy = new TireFactory();
            Product tire = tireFactroy.CreateProduct();
            tire.PrintProduct();

            Console.ReadKey();
        }

现在,我们如果再想要其他部件,只要找对应的工厂就可以了,这样就解决了简单工厂模式中难以扩展的问题.

 

posted @ 2019-03-25 09:49  秋水!  阅读(174)  评论(0编辑  收藏  举报