• 设计模式之简单工厂模式


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

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

      用代码实现该过程:

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

    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!

  • 相关阅读:
    Unity内生成深度贴图
    曲线细分
    Hermite插值
    查看静态库支持的CPU架构
    NLua引擎
    ImWindow
    Xenko Engine
    Fast Shadow Receiver
    2D色彩变换
    RVO
  • 原文地址:https://www.cnblogs.com/nannanITeye/p/2999081.html
Copyright © 2020-2023  润新知