工厂方法是一组方法, 他们针对不同条件返回不同的类实例,这些类一般有共同的父类。

工厂方法模式

来自: http://zh.wikipedia.org/wiki/工厂方法模式

工厂方法模式 是一种面向对象的设计模式。通过调用不同的方法返回需要的类,而不是去实例化具体的类。 对实例创建进行了包装。 工厂方法是一组方法, 他们针对不同条件返回不同的类实例,这些类一般有共同的父类。

工厂方法模式实施一种按需分配的策略, 即传入参数进行选择, 工厂方法根据参数进行选择,返回具体的实例。

FLC中的工厂方法模式

在FLC中比较典型的就是WebRequest.Create(Uri  requestUri)方法

MSDN的介绍如下:

Create 方法将运行时确定的 WebRequest 类的子代作为与 requestUri 最接近的注册匹配项返回。

当以 http:// 或 https://开头的 URI 在 requestUri 中传递时,由 Create 返回一个 HttpWebRequest。

如果改为传递以 ftp:// 开头的 URI,则 Create 方法将返回 FtpWebRequest 实例。

如果改为传递以 file:// 开头的 URI,则 Create 方法将返回 FileWebRequest 实例。

类图大致如下:

因为WebRequest 本身也作为了工厂类,为了区别我画了2次。

转载于:https://www.cnblogs.com/kiminozo/archive/2012/02/15/2353135.html

从FLC中学习的设计模式系列-创建型模式(3)-工厂方法相关推荐

  1. 【地铁上的设计模式】--创建型模式:工厂方法模式

    什么是创建模式 创建型模式是指处理对象创建的设计模式,它们的共同目标是通过某种方式控制对象的创建,以达到更灵活.更可扩展的设计. 创建型模式通常涉及到将对象的创建与使用分离,通过专门的工厂类.构造函数 ...

  2. 创建型模式:工厂方法

    前方高能:<一故事一设计模式>PDF 电子书已经上线,关注公众号即可获取. 个人博客原文 创建型模式:工厂方法 简介 姓名:工厂方法 英文名:Factory method Pattern ...

  3. 设计模式之创建型模式(工厂、原型、建造者)

    文章目录 创建型模式 2.1 工厂设计模式 2.1.1 简单工厂模式 2.1.2 工厂方法模式 2.1.3 抽象工厂 2.1.4 工厂模式总结 2.1.5 Spring中的工厂模式 2.1.6 工作中 ...

  4. 设计模式学习(二)——创建型模式之“工厂模式“

    常见的创建型模式: 单例模式(手写)--只有一个实例 工厂模式--由对象工厂生成对象 建造者模式--组装复杂的实例 原型模式--通过复制生成实例 一.工厂模式的介绍 1.1.工厂模式的定义 在基类中定 ...

  5. 设计模式 - 创建型模式_工厂方法模式

    文章目录 创建型模式 概述 Case Bad Impl Better Impl (⼯⼚模式优化代码) 接口定义 实现奖品发放接⼝ 创建商店⼯⼚ 单元测试 小结 创建型模式 创建型模式提供创建对象的机制 ...

  6. GOF23设计模式(创建型模式)工厂模式

    目录: 一:工厂模式的核心本质 二:关于面向对象的六大基本原则 三:工厂模式的三大类详解(代码示例,详细分析) 首先,上咱本GOF23所有工厂模式的分类表格!!! 创建型模式 单例模式.工厂模式.抽象 ...

  7. 创建型模式之工厂方法模式

    概述 在简单工厂模式中只提供一个工厂类,该工厂类处于对产品类进行实例化的中心位置,它需要知道每一个产品对象的创建细节,并决定何时实例化哪一个产品类.简单工厂模式最大的缺点是当有新产品要加入到系统中时, ...

  8. 4.4_factory_method_创建型模式:工厂方法模式

    创建型模式 --- 工厂方法模式 --- 内容:定义一个用于创建对象的接口 (工厂接口),让子类决定实例化哪一个产品类角色:1. 抽象工厂角色 (Creator)2. 具体工厂角色 (Concrete ...

  9. 备战面试日记(3.2) - (设计模式.23种设计模式之创建型模式)

    本人本科毕业,21届毕业生,一年工作经验,简历专业技能如下,现根据简历,并根据所学知识复习准备面试. 记录日期:2022.1.6 大部分知识点只做大致介绍,具体内容根据推荐博文链接进行详细复习. 文章 ...

最新文章

  1. C/C++中static关键字用法汇总
  2. 22w+的人选择了这款蓝牙耳机
  3. 程序员面试题精选100题(10)-排序数组中和为给定值的两个数字[算法]
  4. 干货 | 五大实例详解,携程 Redis 跨机房双向同步实践
  5. poi中文api文档
  6. 【原】两个时间相加的运算符重载实现
  7. Java已死?九百万程序员说不
  8. [AH2017/HNOI2017] 大佬
  9. 微信小程序之可滚动视图 scroll-view 的使用注意
  10. Visual Studio 2019 v16.6 Preview 3 发布
  11. 跨境电商独立站门槛高,为什么还有无数人挤破头想入坑!
  12. Mysql索引之-cardinality
  13. Zookeeper动态更新服务器列表
  14. [python小工具]小说分割器
  15. android用讯飞实现TTS语音合成 实现中文版
  16. 51单片机入门——LED灯
  17. 王者荣耀战区修改,安卓手机免ROOT教程王者荣耀战力查询
  18. 《孙子兵法》帮你玩转团队管理
  19. IPv6下的DHCP(DHCPv6)
  20. 深圳市怎么样 官田学校介绍

热门文章

  1. 林锐 高质量c语言编程下载,新年献礼:Go语言深度入门手册
  2. 复合消隐信号的作用_南大《AFM》:可拉缩、粘合、导电的双信号柔性彩色薄膜...
  3. 最近使用计算机的记录,windows7查看最近使用记录
  4. html提交表单使用python计算_教你使用Python实现新个税计算器
  5. java线程池案例_使用Executors 和 ThreadPoolExecutor实现Java线程池案例
  6. oel 7.0 安装 mysql 5_在linux上安装PostgreSQL 9.4并启动和关闭数据库
  7. java爬取单张图片
  8. 求1+2!+3!+......+20!的和
  9. java - 条件嵌套
  10. 数据结构排序2-希尔,快速,归并排序