首页 > 其他 > 详细

【学习笔记】设计模式之创建型模式-抽象工厂

时间:2020-05-06 11:38:21      阅读:81      评论:0      收藏:0      [点我收藏+]

将必须统一创建过程的不同产品集中在一个工厂中。此工厂负责创建相同系列不同的产品。

举个例子:

A工厂负责海尔牌的打印机、扫码枪、冰箱、洗衣机。

B工厂负责格力牌的打印机、扫码枪、冰箱、洗衣机。

    /// <summary>
    /// 产品1
    /// </summary>
    abstract class ProductA
    {
        public abstract void Display();
    }
    /// <summary>
    /// 产品2
    /// </summary>
    abstract class ProductB
    {
        public abstract void Display();
    }
    /// <summary>
    /// 海尔产品1
    /// </summary>
    class _1_ProductA : ProductA
    {
        public override void Display()
        {
            Console.WriteLine("_1_ProductA");
        }
    }
    /// <summary>
    /// 海尔产品2
    /// </summary>
    class _1_ProductB : ProductB
    {
        public override void Display()
        {
            Console.WriteLine("_1_ProductB");
        }
    }
    /// <summary>
    /// 格力产品1
    /// </summary>
    class _2_ProductA : ProductA
    {
        public override void Display()
        {
            Console.WriteLine("_2_ProductA");
        }
    }
    /// <summary>
    /// 格力产品2
    /// </summary>
    class _2_ProductB : ProductB
    {
        public override void Display()
        {
            Console.WriteLine("_2_ProductB");
        }
    }
    /// <summary>
    /// 工厂
    /// </summary>
    abstract class Factory
    {
        public abstract ProductA GetProductA();
        public abstract ProductB GetProductB();
    }
    /// <summary>
    /// 海尔牌工厂
    /// </summary>
    class _1_Factory : Factory
    {
        /// <summary>
        /// 生产海尔产品1
        /// </summary>
        /// <returns></returns>
        public override ProductA GetProductA()
        {
            return new _1_ProductA();
        }
        /// <summary>
        /// 生产海尔产品2
        /// </summary>
        /// <returns></returns>
        public override ProductB GetProductB()
        {
            return new _1_ProductB();
        }
    }

    /// <summary>
    /// 格力牌工厂
    /// </summary>
    class _2_Factory : Factory
    {
        /// <summary>
        /// 生产格力产品1
        /// </summary>
        /// <returns></returns>
        public override ProductA GetProductA()
        {
            return new _2_ProductA();
        }
        /// <summary>
        /// 生产格力产品2
        /// </summary>
        /// <returns></returns>
        public override ProductB GetProductB()
        {
            return new _2_ProductB();
        }
    }
    static void Main(string[] args)
        {
           Factory factory = new _1_Factory();  //选择海尔工厂(通过映射,可配置。)
            ProductA productA = factory.GetProductA();  //海尔牌产品1
            ProductB productB = factory.GetProductB();  //海尔牌产品2
        }

 

【学习笔记】设计模式之创建型模式-抽象工厂

原文:https://www.cnblogs.com/hwrblog/p/12835258.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!