程序设计模式(C#代码)----抽象工厂模式

 

using System;

namespace 抽象工厂模式
{
    class Program
    {
        static void Main(string[] args)
        {
            CreateFactory createFactory = new CreateFactory();

            Factory phoneFactory=createFactory.getFactory(CreateFactory.PHONE_FACTORY);
            Phone huawei= phoneFactory.getPhone(PhoneFactory.HUAWEI);
            huawei.createPhone();
            Phone vivo = phoneFactory.getPhone(PhoneFactory.VIVO);
            vivo.createPhone();

            
            Factory maskFactory = createFactory.getFactory(CreateFactory.MASK_FACTORY);
            Mask kn95=maskFactory.getMask(MaskFactory.KN95);
            kn95.createMask();
            Mask n95= maskFactory.getMask(MaskFactory.N95);
            n95.createMask(); 
        }
    }
    /// <summary>
    /// 工厂的抽象类
    /// </summary>
    abstract class Factory
    {
        public abstract Phone getPhone(int phoneType);
        public abstract Mask getMask(int maskType);
    }


    /// <summary>
    /// 手机接口
    /// </summary>
    interface Phone
    {
        public void createPhone();
    }
    /// <summary>
    /// 华为
    /// </summary>
    class HuaWei : Phone
    {
        public void createPhone()
        {
            Console.WriteLine("制造华为手机");
        }
    }
    /// <summary>
    /// Vivo
    /// </summary>
    class Vivo : Phone
    {
        public void createPhone()
        {
            Console.WriteLine("制造Vivo手机");
        }
    }
    /// <summary>
    /// 手机的工厂
    /// </summary>
    class PhoneFactory: Factory
    {
        public const int HUAWEI = 0, VIVO = 1;


        public override Mask getMask(int maskType)
        {
            return null;
        }
        public override Phone getPhone(int phoneType)
        {
            switch (phoneType)
            {
                case HUAWEI:
                    return new HuaWei();
                    break;
                case VIVO:
                    return new Vivo();
                    break;
            }
            return null;
        }
    }

    /// <summary>
    /// 口罩接口
    /// </summary>
    interface Mask
    {
        public void createMask();
    }
    /// <summary>
    /// 口罩N95
    /// </summary>
    class N95 : Mask
    {
        public void createMask()
        {
            Console.WriteLine("制造N95口罩");
        }
    }
    /// <summary>
    /// 口罩KN95
    /// </summary>
    class KN95 : Mask
    {
        public void createMask()
        {
            Console.WriteLine("制造KN95口罩");
        }
    }
    /// <summary>
    /// 口罩的工厂
    /// </summary>
    class MaskFactory : Factory
    {
        public const int N95 = 0, KN95 = 1;


        public override Mask getMask(int maskType)
        {
            switch (maskType)
            {
                case N95:
                    return new N95();
                case KN95:
                    return new KN95();
            }
            return null;
        }
        public override Phone getPhone(int phoneType)
        {
            return null;
        }
    }
    /// <summary>
    /// 创建工厂的类
    /// </summary>
    class CreateFactory
    {
        public const int MASK_FACTORY = 0, PHONE_FACTORY = 1;
        public Factory getFactory(int factoryType)
        {
            switch (factoryType)
            {
                case MASK_FACTORY:
                    return new MaskFactory();
                case PHONE_FACTORY:
                    return new PhoneFactory();
            }
            return null;
        }
    }
}

输出结构:

 

 

posted @ 2021-01-01 19:27  LKGAME  阅读(104)  评论(0)    收藏  举报