码迷,mamicode.com
首页 > 其他好文 > 详细

工厂方法模式

时间:2019-03-25 10:56:08      阅读:169      评论:0      收藏:0      [点我收藏+]

标签:abstract   ctr   over   turn   col   actor   tor   int   read   

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

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

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

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

 

工厂方法模式

标签:abstract   ctr   over   turn   col   actor   tor   int   read   

原文地址:https://www.cnblogs.com/qiushuizh/p/10592053.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!