当前位置: 首页 > article >正文

【设计模式】第5节:创建型模式之“简单工厂、工厂方法和抽象工厂模式”

一、简单工厂模式

请添加图片描述

ProductFactory是创建商品的工厂,商品Product可以实现Product接口中的一些功能。

当需要根据入参的不同生成多种不同的产品时,可以将生成不同产品的逻辑剥离出来,使用产品工厂创建不同的产品。

二、工厂方法

请添加图片描述

ConcreteFactory是具体工厂,用来创建具体产品ConcreteProduct,ProductFactory是创建工厂的工厂,用来创建具体工厂。具体商品ConcreteProduct可以实现Product接口中的一些功能。

三、抽象工厂

请添加图片描述

当需要生成多种产品,每种产品又有多种分类时,就可以采用抽象工厂了。产品工厂ProductFactory用来重建各种大类的产品Product1和Product2,具体工厂ConcreteFactory用来创建各自产品中更细小的分类。

四、适用场景

之所以将某个代码块剥离出来,独立为函数或者类,原因是这个代码块的逻辑过于复杂,剥离之后能让代码更加清晰,更加可读、可维护。

当创建逻辑比较复杂的时候,就考虑使用工厂模式,封装对象的创建过程,将对象的创建和使用相分离。下面是两种创建逻辑比较复杂的场景:

  • 代码中存在if-else分支判断,动态地根据不同的类型创建不同的对象。针对这种情况,我们就考虑使用工厂模式,将这一大坨if-else创建对象的代码抽离出来,放到工厂类中。
  • 尽管我们不需要根据不同的类型创建不同的对象,但是,单个对象本身的创建过程比较复杂,比如要组合其他类对象,做各种初始化操作。在这种情况下,也可以考虑使用工厂模式,将对象的创建过程封装到工厂类中。

对于第一种情况,当每个对象的创建逻辑都比较简单的时候,更推荐使用简单工厂模式,将多个对象的创建逻辑放到一个工厂类中。当每个对象的创建逻辑都比较复杂的时候,为了避免设计一个过于庞大的简单工厂类,推荐使用工厂方法模式,将创建逻辑拆分得更细,每个对象的创建逻辑独立到各自的工厂类中。同理,对于第二种情况,因为单个对象本身的创建逻辑就比较复杂,所以,建议使用工厂方法模式。


http://www.kler.cn/a/105383.html

相关文章:

  • 搜维尔科技:Geomagic Touch X力反馈设备【开箱图真机测试】
  • 【postman】postman的使用与postman汉化
  • 嵌入式系统设计师考试笔记之操作系统基础复习笔记二
  • 爬虫批量下载科研论文(SciHub)
  • Postman笔记
  • 前端访问geoserver服务发生跨域的解决办法,以及利用html2canvas下载绘制的地图
  • 小知识(6) el-table表格选中行和回显行(vue3)
  • 【iOS安全】提取app对应的URLScheme
  • Apache ActiveMQ RCE漏洞复现(CNVD-2023-69477)
  • 信息科技如何做好风险管理
  • JavaWeb——IDEA操作:Project最终新建module
  • 在Eclipse中使用Junit
  • 国际腾讯云自主拼装直播 URL教程!!!
  • node模块导出引入两种方式和npm包管理
  • 点云从入门到精通技术详解100篇-基于尺度统一的三维激光点云与高清影像配准
  • HTML5教程
  • 为什么自动驾驶需要5G?
  • Java后端开发——房贷计算器(Ajax版、Json版、等额本息+等额本金)
  • 传智书城源码+课程设计文档基于JSP+Servlet实现
  • PDF编辑工具Acrobat Pro DC 2023中文