设计模式之简单工厂模式

  简单工厂模式---顾名思义,就是有一个工厂,你用它可以生产不同的产品,当然产品的生产细节你不需要知道,你只负责得到产品,生产过程都封装在工厂内部。简言之,就是一个工厂,你要告诉他你想要的产品名称,他就给你输出产品。

  下面我们举个例子简单说明一下。你和朋友去吃肯德基,你告诉服务员我要鸡翅,你朋友说我要炸土豆条。过了一会,你们要得东西就来了,但是他们怎么做的你们不知道吧?你们只管开吃就好了。

  用代码实现该过程:

  首先,定义一个接口:用来获取不同产品

1 public interface IFood
2     {
3         void get();
4     }

  然后,分别用两个类继承实现IFood接口:分别得到鸡腿和炸土豆条

 1 public class McChicken:IFood
 2     {
 3         public void get()
 4         {
 5             Console.WriteLine("I want McChicken!");
 6         }
 7     }
 8 
 9 public class Chips:IFood
10     {
11         public void get()
12         {
13             Console.WriteLine("I want Chips!");
14         }
15     }

  接下来,就要建工厂来控制制造不同的产品了:

 1  public class FoodFactory
 2      {
 3          public static IFood GetFood(string type)
 4          {
 5              string foodType = "FactoryMode" + '.' + type;
 6              return (IFood)Assembly.Load("FactoryMode").CreateInstance(foodType);//反射:Assembly.Load("程序集").CreateInstance("命名空间.类")
 7          }
 8      }
9
  不习惯反射的就用下面的代码:效果是一样的 10 public class FoodFactory 11 { 12 public static IFood GetFood(string type) 13 { 14 if (type.Equals("McChicken")) 15 return new McChicken(); 16 if (type.Equals("Chips")) 17 return new Chips(); 18 else return null; 19 } 20 }

  最后,来测试一下我们的工厂吧。

 1 class Program
 2     {
 3         static void Main(string[] args)
 4         {
 5             IFood mcChiken = FoodFactory.GetFood("McChicken");
 6             IFood chips = FoodFactory.GetFood("Chips");
 7             mcChiken.get();
 8             chips.get();
 9             Console.ReadLine();
10         }
11     }

输出结果:I want McChicken!

     I want Chips!

原文地址:https://www.cnblogs.com/nannanITeye/p/2999081.html