zoukankan      html  css  js  c++  java
  • 简单工厂模式 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     }
    查看示例代码

    应用场景

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

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

  • 相关阅读:
    ajax打开新窗口防止被浏览器阻止问题
    网站安全
    纠结点
    haven单词5个
    jQuery 鼠标停留样式
    js new date
    XML解析特殊字符出错
    个人对JQuery Proxy()函数的理解
    sql server 数据库 杀掉死锁进程
    转载一个:【C#4.0】中的dynamic与var的区别西南烟雨
  • 原文地址:https://www.cnblogs.com/wangweiabcd/p/3901188.html
Copyright © 2011-2022 走看看