从FLC中学习的设计模式系列-创建型模式(3)-工厂方法
工厂方法是一组方法, 他们针对不同条件返回不同的类实例,这些类一般有共同的父类。
工厂方法模式
来自: 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)-工厂方法相关推荐
- 【地铁上的设计模式】--创建型模式:工厂方法模式
什么是创建模式 创建型模式是指处理对象创建的设计模式,它们的共同目标是通过某种方式控制对象的创建,以达到更灵活.更可扩展的设计. 创建型模式通常涉及到将对象的创建与使用分离,通过专门的工厂类.构造函数 ...
- 创建型模式:工厂方法
前方高能:<一故事一设计模式>PDF 电子书已经上线,关注公众号即可获取. 个人博客原文 创建型模式:工厂方法 简介 姓名:工厂方法 英文名:Factory method Pattern ...
- 设计模式之创建型模式(工厂、原型、建造者)
文章目录 创建型模式 2.1 工厂设计模式 2.1.1 简单工厂模式 2.1.2 工厂方法模式 2.1.3 抽象工厂 2.1.4 工厂模式总结 2.1.5 Spring中的工厂模式 2.1.6 工作中 ...
- 设计模式学习(二)——创建型模式之“工厂模式“
常见的创建型模式: 单例模式(手写)--只有一个实例 工厂模式--由对象工厂生成对象 建造者模式--组装复杂的实例 原型模式--通过复制生成实例 一.工厂模式的介绍 1.1.工厂模式的定义 在基类中定 ...
- 设计模式 - 创建型模式_工厂方法模式
文章目录 创建型模式 概述 Case Bad Impl Better Impl (⼯⼚模式优化代码) 接口定义 实现奖品发放接⼝ 创建商店⼯⼚ 单元测试 小结 创建型模式 创建型模式提供创建对象的机制 ...
- GOF23设计模式(创建型模式)工厂模式
目录: 一:工厂模式的核心本质 二:关于面向对象的六大基本原则 三:工厂模式的三大类详解(代码示例,详细分析) 首先,上咱本GOF23所有工厂模式的分类表格!!! 创建型模式 单例模式.工厂模式.抽象 ...
- 创建型模式之工厂方法模式
概述 在简单工厂模式中只提供一个工厂类,该工厂类处于对产品类进行实例化的中心位置,它需要知道每一个产品对象的创建细节,并决定何时实例化哪一个产品类.简单工厂模式最大的缺点是当有新产品要加入到系统中时, ...
- 4.4_factory_method_创建型模式:工厂方法模式
创建型模式 --- 工厂方法模式 --- 内容:定义一个用于创建对象的接口 (工厂接口),让子类决定实例化哪一个产品类角色:1. 抽象工厂角色 (Creator)2. 具体工厂角色 (Concrete ...
- 备战面试日记(3.2) - (设计模式.23种设计模式之创建型模式)
本人本科毕业,21届毕业生,一年工作经验,简历专业技能如下,现根据简历,并根据所学知识复习准备面试. 记录日期:2022.1.6 大部分知识点只做大致介绍,具体内容根据推荐博文链接进行详细复习. 文章 ...
最新文章
- C/C++中static关键字用法汇总
- 22w+的人选择了这款蓝牙耳机
- 程序员面试题精选100题(10)-排序数组中和为给定值的两个数字[算法]
- 干货 | 五大实例详解,携程 Redis 跨机房双向同步实践
- poi中文api文档
- 【原】两个时间相加的运算符重载实现
- Java已死?九百万程序员说不
- [AH2017/HNOI2017] 大佬
- 微信小程序之可滚动视图 scroll-view 的使用注意
- Visual Studio 2019 v16.6 Preview 3 发布
- 跨境电商独立站门槛高,为什么还有无数人挤破头想入坑!
- Mysql索引之-cardinality
- Zookeeper动态更新服务器列表
- [python小工具]小说分割器
- android用讯飞实现TTS语音合成 实现中文版
- 51单片机入门——LED灯
- 王者荣耀战区修改,安卓手机免ROOT教程王者荣耀战力查询
- 《孙子兵法》帮你玩转团队管理
- IPv6下的DHCP(DHCPv6)
- 深圳市怎么样 官田学校介绍
热门文章
- 林锐 高质量c语言编程下载,新年献礼:Go语言深度入门手册
- 复合消隐信号的作用_南大《AFM》:可拉缩、粘合、导电的双信号柔性彩色薄膜...
- 最近使用计算机的记录,windows7查看最近使用记录
- html提交表单使用python计算_教你使用Python实现新个税计算器
- java线程池案例_使用Executors 和 ThreadPoolExecutor实现Java线程池案例
- oel 7.0 安装 mysql 5_在linux上安装PostgreSQL 9.4并启动和关闭数据库
- java爬取单张图片
- 求1+2!+3!+......+20!的和
- java - 条件嵌套
- 数据结构排序2-希尔,快速,归并排序