iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >使用web工厂方法的效果有哪些
  • 924
分享到

使用web工厂方法的效果有哪些

2023-06-19 10:06:05 924人浏览 八月长安
摘要

本篇内容主要讲解“使用WEB工厂方法的效果有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“使用web工厂方法的效果有哪些”吧!效果工厂方法不再将与特定应用有关的类绑定到你的代码中。代码仅处理

本篇内容主要讲解“使用WEB工厂方法的效果有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“使用web工厂方法的效果有哪些”吧!

效果


工厂方法不再将与特定应用有关的类绑定到你的代码中。代码仅处理Product接口;因此它可以与用户定义的任何ConcreteProduct类一起使用。

编写可扩展代码经常做的一件事就是区分问题领域中共通的部分和该应用特定的部分并加以分离。特定部分最常见的入口就是创建对象的位置。工厂方法模式正好提供了一个可以将构建特定类的部分分离出来的方法。有了这个方法共通的部分只要面对Product接口编程即可,从结构上保证了共通代码可以和任何具象Product类一起工作。

工厂方法的一个潜在缺点在于客户可能仅仅为了创建一个特定的ConcreteProduct对象,就不得不创建Creator的子类。当Creator子类不必需时,客户现在必然要处理类演化的其他方面;但是当客户无论如何必须创建Creator的子类时,创建子类也是可行的。

A potential disadvantage of factory methods is that clients might have to subclass the Creator class just to create a particular ConcreteProduct object.Subclassing is fine when the client has to subclass the Creator class anyway, but otherwise the client now must deal with another point of evolution.

这一段的后半部分翻译不大好理解,和英文原文一起看。工厂方法使用Creator的子类创建ConcreteProduct对象。这是一个潜在的缺点。之所以说是潜在的是因为:如果这个Creator子类本来就是必须的,那么使用工厂方法并不会带来新的负担,一切都OK;否则的话,客户就必须处理演化的其他方面。这里《设计模式》的作者没说明其他方面具体指那些方面,作者猜想可能是指子类化Creator类所带来的负担吧。

下面是Factory Method模式的另外两种效果:
1 ) 为子类提供挂钩(hook)

用工厂方法在一个类的内部创建对象通常比直接创建对象更灵活。Factory Method给子类一个挂钩以提供对象的扩展版本。

在Document的例子中,Document类可以定义一个称为CreateFileDialog的工厂方法,该方法为打开一个已有的文档创建默认的文件对话框对象。 Document的子类可以重定义这个工厂方法以定义一个与特定应用相关的文件对话框。在这种情况下,工厂方法就不再抽象了而是提供了一个合理的缺省实现。

使用工厂方法在类内部创建对象有两个含义,首先是将创建对象的代码封装在一个成员函数中,然后是将这个函数声明为虚函数。这样就为派生类提供了选择扩展或者不扩展的灵活性。

2) 连接平行的类层次

迄今为止,在我们所考虑的例子中,工厂方法并不往往只是被Creator调用,客户可以找到一些有用的工厂方法,尤其在平行类层次的情况下。

构建ConcreteProduct的代码可以被Creator自己使用,有时也会被其他客户使用。特别是在平行类层次的结构中。

当一个类将它的一些职责委托给一个独立的类的时候,就产生了平行类层次。

这句话不大好理解,别着急接着看下面的例子。

考虑可以被交互操纵的图形;也就是说,它们可以用鼠标进行伸展、移动,或者旋转。

我们可以将图形的伸展,移动或者旋转看作图形类的一部分职责。

实现这样一些交互并不总是那么容易,它通常需要存储和更新在给定时刻记录操纵状态的信息,这个状态仅仅在操纵时需要。因此它不需要被保存在图形对象中。

上述交互操作的实现有一定难度,而且通常需要存储操作的状态。如果真的在各个图形类的内部实现会占据很大的篇幅。同时这些信息只是在操作是才需要,并不是各个图形类本质的部分。《设计模式》作者希望表的的应该是:将相互操作这部分职责委托出去的需求是确实存在的。

此外,当用户操纵图形时,不同的图形有不同的行为。例如,将直线图形拉长可能会产生一个端点被移动的效果,而伸展正文图形则可能会改变行距。

不同的图形对于伸展,移动或旋转的处理经常会不同。这里说的是对于不同的图形需要不同的处理类。

有了这些限制,最好使用一个独立的Manipulator对象实现交互并保存所需要的任何与特定操纵相关的状态。不同的图形将使用不同的Manipulator子类来处理特定的交互。得到的Manipulator类层次与Figure类层次是平行(至少部分平行),如下图所示。

使用web工厂方法的效果有哪些

这种图形类和Manipulaotr类之间的关系就是平行类。在这个例子中图形类将控制图形伸展,移动,旋转的这部分职责委托给了Manipulator类。

Figure类提供了一个CreateManipulator工厂方法,它使得客户可以创建一个与 Figure相对应的Manipulator。Figure子类重定义该方法以返回一个合适的Manipulator子类实例。做为一种选择,Figure类可以实现CreateManipulator以返回一个默认的Manipulator实例,而Figure子类可以只是继承这个缺省实现。这样的Figure类不需要相应的Manipulator子类 — 因此该层次只是部分平行的。注意工厂方法是怎样定义两个类层次之间的连接的。它将哪些类应一同工作工作的信息局部化了。

在这个例子中,通过Figure提供的CreateManipulator工厂方法建立了Figure类和Manipulator类之间的联系。

类似的,我们也可以为Figure类设计CreateSetupDialog工厂方法以建立Figure类和每种图形的设定画面之间的联系。

到此,相信大家对“使用web工厂方法的效果有哪些”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: 使用web工厂方法的效果有哪些

本文链接: https://www.lsjlt.com/news/295671.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 使用web工厂方法的效果有哪些
    本篇内容主要讲解“使用web工厂方法的效果有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“使用web工厂方法的效果有哪些”吧!效果工厂方法不再将与特定应用有关的类绑定到你的代码中。代码仅处理...
    99+
    2023-06-19
  • python中工厂方法有哪些应用场景
    本篇文章给大家分享的是有关python中工厂方法有哪些应用场景,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。python主要应用领域有哪些1、云计算,典型应用OpenStack...
    99+
    2023-06-14
  • web抽象工厂模式有哪些优缺点
    这篇“web抽象工厂模式有哪些优缺点”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“web抽象工厂模式有哪些优缺点”文章吧。协...
    99+
    2023-06-19
  • 使用java工厂模式的好处有哪些
    使用Java工厂模式的好处包括: 解耦:工厂模式可以将对象的创建和使用分离,客户端只需要关注接口和抽象类,无需关心具体的实现类,...
    99+
    2024-02-29
    java
  • 在什么情况下可以使用web工厂方法
    这篇文章主要介绍了在什么情况下可以使用web工厂方法的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇在什么情况下可以使用web工厂方法文章都会有所收获,下面我们一起来看看吧。适用性在下列情况下可以使用Factor...
    99+
    2023-06-19
  • web工厂方法的结构是怎样的
    本篇内容介绍了“web工厂方法的结构是怎样的”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!结 构光从类图的角度来看,工厂方法和抽象工厂的类图...
    99+
    2023-06-19
  • Web Services使用多态的方法有哪些
    小编给大家分享一下Web Services使用多态的方法有哪些,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!在Web Services方法中,往往使用的都是一个具体类型的参数,这个参数一般就是一个数据对象。ASP.NET ...
    99+
    2023-06-17
  • Web页面中的Hover效果有哪些
    本篇文章给大家分享的是有关Web页面中的Hover效果有哪些,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。给平淡的站点带来活力hover效果能...
    99+
    2024-04-02
  • web开发者使用的工具有哪些
    本文小编为大家详细介绍“web开发者使用的工具有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“web开发者使用的工具有哪些”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。  一、Java 线上诊断工具 Art...
    99+
    2023-06-02
  • web前端使用的调试工具有哪些
    本篇内容介绍了“web前端使用的调试工具有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
    99+
    2024-04-02
  • Python工作效率提升的方法有哪些
    本篇内容主要讲解“Python工作效率提升的方法有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python工作效率提升的方法有哪些”吧!运行外部文件尝试在JupyterNotebook中运...
    99+
    2023-06-16
  • JS实现轮播图效果的方法有哪些
    这篇文章主要讲解了“JS实现轮播图效果的方法有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JS实现轮播图效果的方法有哪些”吧!Js实现轮播图01实现思路这可能是轮播图最简单点的实现之一...
    99+
    2023-06-25
  • 提升web前端开发效率的工具有哪些
    本篇内容介绍了“提升web前端开发效率的工具有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1. En...
    99+
    2024-04-02
  • 工厂常用哪些ERP系统?主要功能有哪些?
    对于工厂来说,规模大了,管理问题也就随之多了,在工厂生产流程中,我们常见的一些生产现象,比如生产计划表徒具形式、各生产部门半成品堆积、生产计划达标率低、前后工序原材料或半成品衔接不上、经常追加或取消生产计划、紧急订单频繁出现、原定生产计划被...
    99+
    2023-06-05
  • 安全工具netsh IPSec使用方法有哪些
    小编给大家分享一下安全工具netsh IPSec使用方法有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!netsh ipsec 使用方法 在命令行下,通过ne...
    99+
    2023-06-08
  • web前端工程师常用的工具有哪些
    本篇内容主要讲解“web前端工程师常用的工具有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“web前端工程师常用的工具有哪些”吧!1、HBuilder功能简...
    99+
    2024-04-02
  • Redis命令行工具有哪些使用方法
    这篇文章主要介绍“Redis命令行工具有哪些使用方法”,在日常操作中,相信很多人在Redis命令行工具有哪些使用方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Redis命令行工具有哪些使用方法”的疑惑有所...
    99+
    2023-06-04
  • Python中工厂方法模式有什么用
    这篇文章主要为大家展示了“Python中工厂方法模式有什么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Python中工厂方法模式有什么用”这篇文章吧。工厂方法(Factory Method)...
    99+
    2023-06-17
  • vue过渡效果使用的技巧有哪些
    本篇内容介绍了“vue过渡效果使用的技巧有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!概念在进入/离开的过渡中, 会有6个class的...
    99+
    2023-07-04
  • web前端实用工具有哪些
    本篇内容介绍了“web前端实用工具有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、CSS布局生成器它是一个全功能的 CSS 和 JS...
    99+
    2023-06-30
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作