将必须统一创建过程的不同产品集中在一个工厂中。此工厂负责创建相同系列不同的产品。
举个例子:
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