原味地址http://www.cnblogs.com/zhili/p/SimpleFactory.html

简单工厂模式通俗的理解就是用户与工厂的关系,用户用的东西,工厂来生成,责任明确。

就像大神展示的例子,小弟自己敲了一遍。

 class Program
{
static void Main(string[] args)
{
//点菜
//点个西红柿
Food food = FoodFactory.GetFood("Tomato");
food.Print(); Thread.Sleep(5000); Food food1 = FoodFactory.GetFood("egg");
food1.Print(); Console.Read(); }
} /// <summary>
/// 抽象类
/// </summary>
public abstract class Food
{
public abstract void Print();
} //西红柿
public class Tomato:Food
{
public override void Print()
{
Console.WriteLine("Tomato");
}
} //鸡蛋
public class Egg : Food
{
public override void Print()
{
Console.WriteLine("egg");
}
} //工厂类
public class FoodFactory
{
public static Food GetFood(string type)
{
Food food = null;
if (type == "Tomato")
{
food = new Tomato();
}
else if (type == "egg")
{
food = new Egg();
} return food;
}
}

  工厂生产西红柿和鸡蛋,用户吃的时候可以选择鸡蛋或者是西红柿,但是,如果用户想吃西瓜,工厂就需要增加生产了,这是简单工厂模式的限制。个人觉得,工厂模式比较适用于工厂类创建的对象比较少时用。

最新文章

  1. 【GOF23设计模式】观察者模式
  2. BestCoder27 1001.Jump and Jump... (hdu 5162) 解题报告
  3. Maven中手动引用第三方jar包
  4. bootstrap-datepicker 日期格式设置
  5. 批量建立EXCHANGE邮件帐号建立三部曲
  6. 我最喜欢的visual studio 2013的新特性
  7. querydsl的好处
  8. 纯JavaScript实现HTML5 Canvas六种特效滤镜
  9. WCF技术剖析之二十七: 如何将一个服务发布成WSDL[基于HTTP-GET的实现](提供模拟程序)
  10. cleanMyMac
  11. 前端js,后台python实现RSA非对称加密
  12. JS前端调用后台方法
  13. unix时间转换为datetime\datetime转换为unixtime
  14. SpringBoot 配置 Servlet、Filter、Listener
  15. JS中的continue,break,return的区别
  16. Best Cow Fences POJ - 2018 (二分)
  17. Codeforces 1090A - Company Merging - [签到水题][2018-2019 Russia Open High School Programming Contest Problem A]
  18. Java EE之Hibernate异常总结【2】Field &#39;id&#39; doesn&#39;t have a default value
  19. mui框架(一)
  20. .NET下获取应用程序目录的一些方法

热门文章

  1. 基于unoconv的在线office预览
  2. webpack快速入门——实战技巧:开发和生产并行设置
  3. [Dart]语法基础
  4. 1. Python中如何使用其他语言?(python的胶水作用,python又叫胶水语言)
  5. Python爬虫之Cookie和Session
  6. maven安装以及eclipse配置maven
  7. 验证resneXt,densenet,mobilenet和SENet的特色结构
  8. node 利用http和cheerio编写简易爬虫
  9. OAuth 2.0 - Authorization Code授权方式详解
  10. MySQL权限管理(五)