工厂模式:多个不同对象的生成由同一个对象进行实例化,外部只需通过工厂类提供指定参数,
就能返回对应的对象,而无需关心内部的实现细节.
示例代码如下:
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Security; 5 using System.Text; 6 using System.Threading.Tasks; 7 //所有动物的基类 8 class Animal 9 { 10 public virtual void Run() 11 { 12 Console.WriteLine("动物在跑!"); 13 } 14 } 15 //派生自动物类的猴子类 16 class Monkey : Animal 17 { 18 public override void Run() 19 { 20 base.Run(); 21 Console.WriteLine("Monkey在跑!"); 22 } 23 } 24 //派生自动物类的老虎类 25 class Triger : Animal 26 { 27 public override void Run() 28 { 29 base.Run(); 30 Console.WriteLine("猴子在跑!"); 31 } 32 } 33 34 enum AnimalType 35 { 36 Monkey, triger 37 } 38 /// <summary> 39 /// 动物工厂 40 /// </summary> 41 class AnimalFactory 42 { 43 /// <summary> 44 /// 获取动物 45 /// </summary> 46 /// <param name="type">类型</param> 47 /// <returns>返回动物</returns> 48 public Animal GetAnimal(AnimalType type) 49 { 50 Animal newAnimal = null; 51 switch (type) 52 { 53 case AnimalType.Monkey: newAnimal = new Monkey(); break; 54 case AnimalType.triger: newAnimal = new Triger(); break; 55 default: break; 56 } 57 return newAnimal; 58 } 59 } 60 61 62 namespace FactoryModel 63 { 64 class Program 65 { 66 static void Main(string[] args) 67 { 68 //实例化一个动物工厂类 69 AnimalFactory factory = new AnimalFactory(); 70 //外部不需要关心猴子是怎么生成的,只需要传递参数,就能返回一只猴子 71 Animal monkey = factory.GetAnimal(AnimalType.Monkey); 72 monkey.Run(); 73 Console.WriteLine("******************************"); 74 Animal triger = factory.GetAnimal(AnimalType.triger); 75 triger.Run(); 76 77 Console.ReadKey(); 78 } 79 } 80 }