1. 程式人生 > 實用技巧 >程式設計模式(C#程式碼)----抽象工廠模式

程式設計模式(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; } } }

輸出結構: