位置: 编程技术 - 正文

详解设计模式中的工厂方法模式在Python程序中的运用(设计模式含义)

编辑:rootadmin

推荐整理分享详解设计模式中的工厂方法模式在Python程序中的运用(设计模式含义),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:详解设计模式中不包括,设计模式举例说明,设计模式举例说明,详解设计模式中的问题,设计模式举例说明,设计模式理解,详解设计模式中的问题,详解设计模式中不包括,内容如对您有帮助,希望把文章链接给更多的朋友!

工厂方法(Factory Method)模式又称为虚拟构造器(Virtual Constructor)模式或者多态工厂(Polymorphic Factory)模式,属于类的创建型模式。在工厂方法模式中,父类负责定义创建对象的公共接口,而子类则负责生成具体的对象,这样做的目的是将类的实例化操作延迟到子类中完成,即由子类来决定究竟应该实体化哪一个类。在简单工厂模式中,一个工厂类处于对产品类进行实例化的中心位置上,它知道每一个产品类的细节,并决定何时哪一个产品类应当被实例化。简单工厂模式的优点是能够使客户端独立于产品的创建过程,并且在系统中引入新产品时无需对客户端进行修改,缺点是当有新产品要加入到系统中时,必须对工厂类进行修改,以加入必要的处理逻辑。简单工厂模式的致命弱点就是处于核心地位的工厂类,因为一旦它无法确定要对哪个类进行实例化时,就无法使用该模式,而工厂方法模式则可以很好地避免这一问题。考虑这样一个应用程序框架(Framework),它可以用来浏览各种格式的文档,如TXT、DOC、PDF、HTML等,设计时为了让软件的体系结构能够尽可能地通用,定义了Application和Document这两个抽象父类,客户必须通过它们的子类来处理某一具体类型的文档。例如,要想利用该框架来编写一个PDF文件浏览器,必须先定义PDFApplication和PDFDocument这两个类,它们应该分别继承于Application和Document。Application的职责是对Document进行管理,并且在需要时创建它们,比如当用户从菜单中选择Open或者New的时候,Application就要负责创建一个Document的实例。显而易见,被实例化的特定Document子类是与具体应用相关的,因此Application无法预测哪个Document的子类将被实例化,它只知道一个新的Document何时(When)被创建,但并不知道哪种(Which)具体的Document将被创建。此时若仍坚持使用简单工厂模式会出现一个非常尴尬的局面:框架必须实例化类,但它只知道不能被实例化的抽象类。解决的办法是使用工厂方法模式,它封装了哪一个Document子类将被创建的信息,并且能够将这些信息从框架中分离出来。如图1所示,Application的子类重新定义了Application的抽象方法createDocument(),并返回某个恰当的Document子类的实例。我们称createDocument()是一个工厂方法(factory method),因为它非常形象地描述了类的实例化过程,即负责"生产"一个对象。

简单说来,工厂方法模式的作用就是可以根据不同的条件生成各种类的实例,这些实例通常属于多个相似的类型,并且具有共同的父类。工厂方法模式将这些实例的创建过程封装了起来,从而简化了客户程序的编写,并改善了软件体系结构的可扩展性,使得将来能够以最小的代价加入新的子类。工厂方法这一模式适合在如下场合中运用:当无法得知必须创建的对象属于哪个类的时候,或者无法得知属于哪个类的对象将被返回的时候,但前提是这些对象都符合一定的接口标准。当一个类希望由它的子类来决定所创建的对象的时候,其目的是使程序的可扩展性更好,在加入其他类时更具弹性。当创建对象的职责被委托给多个帮助子类(helper subclass)中的某一个,并且希望将哪个子类是代理者这一信息局部化的时候。需要说明的是,使用工厂方法模式创建对象并不意味着一定会让代码变得更短(实事上往往更长),并且可能需要设计更多的辅助类,但它的确可以灵活地、有弹性地创建尚未确定的对象,从而简化了客户端应用程序的逻辑结构,并提高了代码的可读性和可重用性。

详解设计模式中的工厂方法模式在Python程序中的运用(设计模式含义)

拿一个动物工厂来举例说明

下面是简单工厂模式的实现:

看起来工厂方法模式要复杂很多啊,也没觉得比简单工厂模式有什么好处,为什么还要用工厂方法模式呢? 简单工厂模式的优点很明显,工厂函数封装了逻辑判断,客户端使用负担要小很多。相应的问题也很明显,要增加新的产品类型,就需要修改工厂函数,这违背了开闭原则。 但是工厂方法模式似乎绕了一圈又回到原始时代了,下面写不就行了吗,何必外面套一层Factory:

工厂方法模式,对于需要做强类型检查的语言比如Java、C++等在组织代码时是有好处的。对于Python这种动态语言来说,感觉体现不出太多价值,或许我还没有理解工厂方法模式的真谛。

实例讲解Python设计模式编程之工厂方法模式的使用 工厂方法模式是简单工厂模式的进一步抽象和推广,它不仅保持了简单工厂模式能够向客户隐藏类的实例化过程这一优点,而且还通过多态性克服了工

举例讲解Python设计模式编程中对抽象工厂模式的运用 抽象工厂模式:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。优点:易于交换产品系列,只要更改相应的工厂即可。缺

深入解析Python设计模式编程中建造者模式的使用 建造者模式:将一个复杂对象的构建与他的表示分离,使得同样的构建过程可以创建不同的表示。基本思想某类产品的构建由很多复杂组件组成;这些

标签: 设计模式含义

本文链接地址:https://www.jiuchutong.com/biancheng/383362.html 转载请保留说明!

上一篇:探究python中open函数的使用(python中的open)

下一篇:实例讲解Python设计模式编程之工厂方法模式的使用(python设计gui)

  • 进项税额怎么抵税
  • 银行手续费回单可以作为入账依据吗
  • 未按规定缴纳保险
  • 预提所得税的计税基础
  • 企业收到股利分红如何缴税
  • 企业所得税汇算清缴操作流程
  • 软件租赁费计入哪个科目
  • 企业开办费可不交税吗
  • 出租场地属于什么营业范畴
  • 专利年费入什么会计科目
  • 支付给个人的劳务费需要发票吗
  • 汇算清缴调表不调账调的是哪张表
  • 土地增值税计入固定资产清理
  • 直接收到货款也要走应收账款吗
  • 营业成本占营业收入比重较低的原因
  • 专票没有税点
  • 采购服务需要缴什么税
  • 税率降低怎么算降税额
  • 产品税率下调企业是否要到税务部门备案
  • 新的企业所得税暂行条例
  • 企业购买的商业保险赔偿多少
  • 港币转人民币差额怎么平帐?
  • 退租未摊销的装修费会计分录怎么写
  • 合并利润表抵消事项包括
  • 奖金用现金发放违法吗
  • 旅游业是一个怎样的产业
  • 一般和小规模纳税人哪个免税
  • 银行摘要冲账是什么意思
  • 本期增加固定资产原值
  • 房地产工程质量检测费计入什么科目
  • 私人打款到对公账户可以吗
  • mac系统怎么更改输入法
  • 如何做会计分录
  • 购入办公桌椅怎样入账
  • php7 ??
  • 新成立股份有限公司股本构成
  • 支付宝消费计入什么科目
  • 资产接收范围的确定
  • 应收款抹零
  • 财务人员如何管控费用支出
  • 初雪与最后的秋天的区别
  • 购买税盘的服务费全额抵扣怎么操作
  • 流动资产金额
  • 数据库系统课程学什么
  • 业务宣传费列支合理性
  • 给深度学习研究生的入门建议(未完待续ing)
  • php array_fill
  • 行政单位其他应付款
  • 研发费用的会计处理方法
  • 织梦如何采集文章
  • 织梦图片要放哪里
  • 个人所得税如何纳税
  • 进口环节缴纳关税计入什么科目
  • 个体户需要给员工买五险一金吗
  • 房租已付未收到发票
  • 其他应付款怎么冲平影响会计利润吗
  • 财务费用中的利息支出
  • 资金周转率计算公式
  • 报废周转材料应负担的成本差异
  • 零售行业折扣销售方案
  • 坏账准备具有哪些特征
  • 产品成本计算的分批法适用于
  • 现金流量表和利润表的勾稽关系
  • 第一份工作的五个条件
  • 房地产开发企业建造的商品房,在出售前
  • sql server数据库中的null(空值)
  • 怎么去掉0前面的逗号
  • win10系统优酷播放不了
  • suse 10.3 安装http apche2时遇到的rpm依赖问题的解决方法
  • 电脑任务管理器磁盘100%是什么意思
  • winfs.exe - winfs是什么进程
  • win8自动进入桌面
  • win7的环境变量如何还原
  • 深入剖析kubernetes pdf
  • shell脚本用法
  • JavaScript中数组长度的属性
  • 冒烟测试和接口测试
  • java script入门
  • Python中MySQL数据迁移到MongoDB脚本的方法
  • 广东省电子税务局电话
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设