从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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/576603.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Elasticsearch索引的数据存储路径是如何确定的

Elasticsearch中,在node的配置中可以指定path.data用来作为节点数据的存储目录,而且我们可以指定多个值来作为数据存储的路径,那么Elasticsearch是如何判断应该存储到哪个路径下呢?今天我就记录一下这个问题。 Elasticsearch的索…

带分页码的分页算法

int start 1, end 10;//如果总页数小于结束页码if (PageCount < end){//则结束页码为总页数end PageCount;}else{//当前页大于5后开始重新计算起始页,否则起始页为1start PageIndex > 5 ? PageIndex - 5 : start;//起始页码加9减去总页数,用于查看是否超过了总页数i…

最优化学习笔记(七)——Levenberg-Marquardt修正(牛顿法修正)

上节末尾谈到牛顿法中隐含的另外一个问题在于hessian矩阵可能不是正定的。因此&#xff0c;d(k)−F(x(k))−1g(x(k))\boldsymbol{d}^{(k)} = -\boldsymbol{F}(\boldsymbol{x}^{(k)})^{-1}\boldsymbol{g(x^{(k)})} 可能不会是下降方向。Levenberg-Marquardt修正可以解决这个问…

Elasticsearch内存

核心概念 基于LuceneJava应用 内存使用分析 Lucene的内存消耗 倒排索引。&#xff08;堆内存&#xff09; Lucene中&#xff0c;索引是存储在磁盘中&#xff0c;一个索引&#xff08;Index&#xff09;由多个段&#xff08;Segment&#xff09;组成。当启动IndexSearcher时&…

Canal数据堆积

记录一下canal的问题。数据同步一直使用阿里开源的canal&#xff0c;最近使用过程中遇到一些问题&#xff0c;在这里记录一下。 原因 我们使用canal监听MySQL&#xff0c;然后通过client获取发送到mq&#xff08;自定义格式&#xff09;。最近数据组的同事批量更新了一次数据…

最优化学习笔记(八)——共轭方向法

从这节开始&#xff0c;将学习共轭方向法的相关内容&#xff0c;本篇先做一个简短的开篇。共轭方向法的计算效率不如之前的牛顿法&#xff0c;但是也优于最速下降法。它有以下优势&#xff1a; 对于n维二次型问题,能够在n步之内得到结果&#xff1b;作为共轭方向的典型代表&am…

解决PhoneGap在Android手机上的全屏问题

目前&#xff0c;结合PhoneGap 框架使用HTML5JavaScriptCSS3开发Android或IOS系统上的应用和游戏已经成为可能性&#xff0c;这两天自己使用HTML5开发了一款小型悠闲游戏&#xff0c;使用PhoneGap打包成APK运行在Android手机上&#xff0c;却遇到不能全屏&#xff0c;想了好久&…

ES学习笔记之-ClusterState的学习

前面研究过ES的get api的整体思路&#xff0c;作为编写ES插件时的借鉴。当时的重点在与理解整体流程&#xff0c;主要是shardOperation()的方法内部的调用逻辑&#xff0c;就弱化了shards()方法。实际上shards()方法在理解ES的结构层面&#xff0c;作用更大一些。我们还是从get…

最优化学习笔记(九)——基本的共轭方向算法

一、基本共轭方向算法 对于n维二次型函数的最小化问题: f(x)=12xTQx−xTb f(x)=\frac{1}{2}\boldsymbol{x^TQx-x^Tb}其中&#xff0c;QQT>0,x∈Rn。因为Q>0,所以函数f有一个全局极小点,可以通过求解Qx=b得到。 基本共轭方向算法 给定初始点x(0)和一组关于Q共轭的方向…

HTML简单实例加表单的显示效果

HTML可以说是一种十分简单的标记语言&#xff0c;但是对于Web开发还是必不可少的&#xff0c;所以对HTML的标记进行适当的了解 还是十分有必要的。下面我们来演示一下基本的HTML效果和一些简单的标签&#xff0c;以及在表单界面的各种提交方式。 首先是HTML的常用简单标签。 &l…

机器学习笔记(十二)——马尔科夫模型

马尔科夫模型是一种概率图模型&#xff0c;它描述了一类重要的随机过程(随机过程又称为随机函数&#xff0c;是随时间而随机变化的过程)。我们常常需要考察一个随机变量序列&#xff0c;这些随机变量序列并不是相互独立的&#xff0c;每个随机变量的值都依赖于这个序列前边的状…

用Java代码在ElasticSearch中索引PDF文件?

以下是我的代码&#xff1a; InputStream inputStream new FileInputStream(new File("mypdf.pdf"));try {byte[] fileByteStream IOUtils.toByteArray(inputStream );String base64String new String(Base64.getEncoder().encodeToString(fileByteStream).getBy…

美国影视演员协会选择了Windows Azure

娱乐行业的主要组织之一的美国影视演员协会&#xff08;SAG&#xff09;最近因云计算的需要选择Windows Azure解决方案。美国影视演员协会将他们的网站从基于Linux的服务器迁移到支持他们的最大年度事件——美国演员工会奖的Windows Azure上。 每年的年度颁奖典礼的到来标志着一…

最优化学习笔记(十)——对偶线性规划

一、对偶问题 每个线性规划问题都有一个与之对应的对偶问题。对偶问题是以原问题的约束条件和目标函数为基础构造而来的。对偶问题也是一个线性规划问题&#xff0c;因此可以采用单纯形法&#xff08;有关单纯形法会在以后的笔记中补充&#xff09;求解。对偶问题的最优解也可以…

elasticsearch基本查询二(英文分词)term和terms查询

term和terms查询(查找zhaoliu这个人的信息) term query会去倒排索弓|中寻找确切的term,它并不知道分词器的存在。这种查询适合keyword、numeric. date. term:查询某个字段里含有某个关键词的文档 GET /lib3/user/_search/ { "query":{ "term": {interests&…

Iphone开发之音频101(part 2):转换和录音

iPhone开发之音频101(Part 2)&#xff1a;转换和录音 译者&#xff1a;大侠自来也 免责申明&#xff08;必读&#xff01;&#xff09;&#xff1a;本博客提供的所有教程的翻译原稿均来自于互联网&#xff0c;仅供学习交流之用&#xff0c;切勿进行商业传播。同时&#xff0c;转…

机器学习笔记(十三)——隐马尔科夫模型

一、隐马尔科夫模型 在马尔科夫模型中&#xff0c;每一个状态代表了一个可以观察的事件&#xff0c;所以&#xff0c;马尔科夫模型有时称为可视马尔科夫模型&#xff08;visible Markov model&#xff0c;VMM&#xff09;&#xff0c;这在某种程度上限制了模型的适应性。在隐马…

elasticsearch基本查询三(英文分词)match查询

#match查询 #match query知道分词器的存在&#xff0c;会对filed进行分词操作, 然后再查询 GET /ib3/user/_search { "query":{ "match":{ "name": "zhaoliu" }} } GET /lib3/user/_search { "query":{ "match"…

solr 3.5 配置及应用(二)

在 solr 3.5 配置及应用(一) 讲过一了 solr 3.5的详细配置&#xff0c;本节我们讲利用solr 的客户端调用solr的应用了&#xff01; 一、利用SolrJ操作solr API 使用SolrJ操作Solr会比利用httpClient来操作Solr要简单。SolrJ是封装了httpClient方法&#xff0c;来操作solr的API的…

elasticsearch控制返回字段查询三(英文分词)match查询

#_source指定查询返回的字段信息 #_source指定查询返回的字段信息 GET /lib3/user/_search {"from":0, "size": 2, "_source": ["address" , "name"] ,"query": {"match": {"interests": &…