博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
简单工厂模式 SimpleFactory---Design Pattern 0
阅读量:5048 次
发布时间:2019-06-12

本文共 1715 字,大约阅读时间需要 5 分钟。

简单工厂模式 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     //需求 抽象类Food26     public abstract class Food27     {28         public abstract void Print();29     }30     //原来的需求 具体类Tomatoes31     public class Tomatoes : Food32     {33         public override void Print()34         {35             Console.WriteLine("番茄炒蛋!");36         }37     }38     //新增的需求 具体类Potatoes39     public class Potatoes : Food40     {41         public override void Print()42         {43             Console.WriteLine("土豆肉丝!");44         }45     }46     //程序调用入口(Main方法)47     class Program48     {49         static void Main(string[] args)50         {51             //原来的需求52             SimpleFactory.Cook("番茄炒蛋").Print();53             //新增的需求54             SimpleFactory.Cook("土豆肉丝").Print();55             Console.ReadKey();56         }57     }
查看示例代码

应用场景

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

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

转载于:https://www.cnblogs.com/wangweiabcd/p/3901188.html

你可能感兴趣的文章
Eclipse快捷键:同时显示两个一模一样的代码窗口
查看>>
《架构之美》阅读笔记05
查看>>
《大道至简》读后感——论沟通的重要性
查看>>
JDBC基础篇(MYSQL)——使用statement执行DQL语句(select)
查看>>
关于React中props与state的一知半解
查看>>
java中Hashtable和HashMap的区别(转)
查看>>
关闭数据库
查看>>
webStrom智能提示忽略首字母大小写问题
查看>>
层叠加的五条叠加法则(一)
查看>>
设计模式六大原则(5):迪米特法则
查看>>
对Feature的操作插入添加删除
查看>>
javascript String
查看>>
ecshop 系统信息在哪个页面
查看>>
【转】码云source tree 提交超过100m 为什么大文件推不上去
查看>>
Oracle数据库的增、删、改、查
查看>>
MySql执行分析
查看>>
git使用中的问题
查看>>
yaml文件 .yml
查看>>
linux字符集修改
查看>>
phpcms 添加自定义表单 留言
查看>>