• 简单工厂模式 SimpleFactory---Design Pattern 0


    简单工厂模式 SimpleFactory

    简单工厂模式又叫静态方法模式(因为工厂类定义了一个静态方法),由一个工厂类根据传入的参数决定创建出哪一种产品类的实例,但不在“四人帮”的23种设计模式之中。

    把经常改变需求的部分封装到一个中达到降低对象之间的耦合度的目的。

     1     //将需求经常改变的部分封装到简单工厂类SimpleFactory中
     2     public class SimpleFactory
     3     {
     4         //定义根据需要type返回指定Food对象的静态方法Cook
     5         public static Food Cook(string type)
     6         {
     7             //定义要返回的对象并赋值为null
     8             Food food = null;
     9             //需求经常改变的部分
    10             switch (type)
    11             {
    12                 //原来的需求
    13                 case "番茄炒蛋":
    14                     food = new Tomatoes();
    15                     break;
    16                 //新增的需求
    17                 case "土豆肉丝":
    18                     food = new Potatoes();
    19                     break;
    20             }
    21             //返回目标对象
    22             return food;
    23         }
    24     }
    25     //需求 抽象类Food
    26     public abstract class Food
    27     {
    28         public abstract void Print();
    29     }
    30     //原来的需求 具体类Tomatoes
    31     public class Tomatoes : Food
    32     {
    33         public override void Print()
    34         {
    35             Console.WriteLine("番茄炒蛋!");
    36         }
    37     }
    38     //新增的需求 具体类Potatoes
    39     public class Potatoes : Food
    40     {
    41         public override void Print()
    42         {
    43             Console.WriteLine("土豆肉丝!");
    44         }
    45     }
    46     //程序调用入口(Main方法)
    47     class Program
    48     {
    49         static void Main(string[] args)
    50         {
    51             //原来的需求
    52             SimpleFactory.Cook("番茄炒蛋").Print();
    53             //新增的需求
    54             SimpleFactory.Cook("土豆肉丝").Print();
    55             Console.ReadKey();
    56         }
    57     }
    查看示例代码

    应用场景

    当工厂类负责创建的对象比较少时可以考虑使用简单工厂模式;

    客户如果只知道传入工厂类的参数,对于如何创建对象的逻辑不关心时可以考虑使用简单工厂模式。

  • 相关阅读:
    getBoundingClientRect()方法
    Sublime Text3 安装less
    less知识点总结(一)
    跨域知识(二)——JSONP
    面向过程和面向对象的区别(转)
    暴力+DP:买卖股票的最佳时机
    车的可用捕获量(3.26leetcode每日打卡)
    三维形体的表面积(3.25leetcode每日打卡)
    基础练习:FJ的字符串
    DP:打家劫舍
  • 原文地址:https://www.cnblogs.com/wangweiabcd/p/3901188.html
Copyright © 2020-2023  润新知