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     }
    查看示例代码

    应用场景

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

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

  • 相关阅读:
    Spring DI模式 小样例
    java中经常使用的日期格式化(全)
    循环-15. 统计素数并求和(20)
    [Unity3D]Unity3D游戏开发之自己主动寻路与Mecanim动画系统的结合
    【UVA】11732
    Mac OS使用技巧之十六:系统失去响应怎么办?
    C# 保存窗口为图片(保存纵断面图)
    Linux Resin 安装
    Etcd学习(二)集群搭建Clustering
    android中选择控件与选择界面自然过度效果的实现--一种新的交互设计
  • 原文地址:https://www.cnblogs.com/wangweiabcd/p/3901188.html
Copyright © 2011-2022 走看看