程序设计模式(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; } } }
输出结构:


浙公网安备 33010602011771号